【发布时间】:2021-03-04 02:25:17
【问题描述】:
我正在尝试为图形上的算法动态分配内存。这是我的代码分解为问题:
typedef struct
{
int id;
int color;
} node_t;
unsigned int max_n = 2;
node_t* node_malloc = malloc(sizeof(node_t) * max_n);
node_t* nodes = node_malloc;
if(atoi(left_node) > max_n)
{
max_n = (size_t) atoi(left_node);
nodes = realloc(nodes, sizeof(node_t) * max_n);
}
对于 max_n
free(node_malloc);
在 realloc 发生后调用 free(node_malloc) 时,它会抛出“free(): invalid next size (fast)”
感谢您的回答!
【问题讨论】:
-
“不起作用”是什么意思?
-
是的,抱歉,补充说。当它没有重新分配时我确实工作,但当它重新分配时我不工作。
-
这也取决于你如何写入数组。在
atoi()和所有这些中看不到任何好处。并考虑到你不想打包struct,所以会有很多差距,如果在上面做一些定制的事情肯定会变得很糟糕。
标签: c struct malloc free realloc