【发布时间】:2012-07-21 11:23:42
【问题描述】:
我编写了一个函数来解析一个 url 并将其拆分为它的组件。为了存储 URL 的组成部分,我将一个指针(指向函数)传递给名为 urlinfo 的以下结构:
typedef struct urlstruct {
char** protocol;
char** address;
char** port;
char** page;
} urlstruct;
它包含双指针的原因是因为我不知道 URL 的每个组成部分会有多长。在函数内部,我计算出存储每个组件所需的大小,并尝试使用以下行将内存分配给 urlstruct 的组件:
*(urlinfo->protocol) = (char*)malloc(i * sizeof(char));
其中(i * sizeof(char)) 是所需的大小。此行导致访问冲突。有谁知道如何正确分配内存?
提前致谢:)
【问题讨论】:
-
几乎可以肯定,
urlinfo->protocol不是一个有效的指针。你是怎么初始化的? (顺便说一句,你永远不需要乘以sizeof(char),因为根据定义它是 1)。 -
我不明白你需要双指针。如果组件是单个 C 字符串(任何长度),您只需要
char*。 -
考虑到这被标记为 c++:您是否有迫切的理由使用原始指针和 malloc 进行内存管理(意味着您将其传递给需要
malloced指针的库)?如果不是,我建议避免这样做。为什么你需要双指针?你好像没有多个协议,....
标签: c++ pointers struct malloc