【发布时间】:2018-04-08 18:06:41
【问题描述】:
我正在尝试创建一个结构数组,但一开始我不知道它的大小。
struct MyStruct** thing;
size_t thing_len = 0;
thing = (struct MyStruct**) malloc(thing_len * sizeof(struct MyStruct*));
//...
thing_len += 1
thing = (struct MyStruct**) realloc(thing_len * sizeof(struct MyStruct*));
当我这样做时,thing 得到类型 MyStruct* 而不是 MyStruct** 并包含 0x0。但是当我这样做时
struct MyStruct* thing;
size_t thing_len = 0;
thing = malloc(thing_len * sizeof(struct MyStruct));
//...
thing_len += 1
thing = realloc(thing_len * sizeof(struct MyStruct));
有效!!
我不知道它是否改变了某些东西,但我正在使用 -ansi 和 -pedantic 选项。
【问题讨论】:
-
阅读所用函数的文档总是一个好主意。
-
C89、C90、安西?你想要什么?首先,为什么不是 C11,当前的标准版本?
-
警告:使用
-Wall -Wextra -pedantic。
标签: c pointers struct realloc c89