为C中数据结构的指针分配内存

问题描述 投票:0回答:1

我在 C 中有一个数据结构,在定义中,有一系列不同类型的指针:

typedef struct data_t{

type_0 *data_0;
...
type_n *data_n;

};

现在,假设我声明一个与 data_t 类型相同的指针,并将内存分配给该指针:

data_t data = malloc(sizeof(*data));

我有问题:首先,鉴于我已经分配了data的整个大小,我是否需要为data_t内的每个指针分配内存?

如果第一个为真,那么,data内每个指针分配的内存都具有为data分配的内存范围内的地址,否则malloc将在data范围之外分配?

我是 C 新手,所以也许我的问题不清楚。现在就让我来看看如何改进吧。谢谢。

c pointers malloc heap-memory
1个回答
0
投票

指针正如其名称所暗示的那样,它们指向其他地方。

当您为

data
结构对象分配内存时,您为指针成员变量分配了空间,但没有为它们分配任何指向的空间。

data
分配内存后,需要初始化成员变量,对于指针,使它们指向有效位置。


本质上

data_t *data = malloc(sizeof(*data));

类似于

data_t actual_data_object; /* Allocate memory */
data_t *data = &actual_data_object;

您是否认为这是为指针应该指向的位置分配内存?但愿不会。当你这样做时也是一样的

malloc

© www.soinside.com 2019 - 2024. All rights reserved.