【发布时间】:2015-04-07 08:36:23
【问题描述】:
想象一下我有以下结构
struct Memory {
int type;
int prot;
};
typedef struct Memory *Memory;
如何使用 malloc() 对其进行初始化?
Memory mem = malloc(sizeof(Memory));
或
Memory mem = malloc(sizeof(struct Memory));
正确的分配方式是什么?
【问题讨论】:
-
您的
typedef在很多层面上都是错误的……这是一场等待发生的意外,真的。无论哪种方式,写struct memory { <members> };然后像这样分配struct memory *mem = malloc(sizeof *mem); -
你认为分配一个对象需要多少内存?可能是你要分配的对象类型的大小?
-
@EliasVanOotegem 谢谢。那么正确的尺寸应该是多少?是 8 字节还是 4 字节?
-
@juanchopanza,这就是我不确定的。我会使用我的结构作为指针,即 mem->type = 1;而不是 mem.type = 1。所以我的结构应该是 8 个字节还是 4 个字节?
-
你真的应该花一些时间学习什么是结构和指针,因为你似乎有一些误解。您不能“将我的结构用作指针”。
标签: c