【发布时间】:2020-09-12 03:46:01
【问题描述】:
我正在为这个更大的程序用 C 语言编写一个非常简单的列表数据类型(它的效率非常低,但它可以工作),但根据我使用代码的方式,我有时会遇到分段错误,但如果我的输入数据略有不同代码很好。
有问题的部分是这样的:
struct Vec {
int size;
Node* ptr;
};
void push_to_vec(struct Vec* root, Node to_push) {
root -> size ++;
root -> ptr = realloc(root -> ptr, root -> size);
root -> ptr[root -> size - 1] = to_push;
}
我尝试使用 print stamens 然后使用 lldb 调试此代码,似乎 push_to_vec 函数中的 realloc 调用是失败的行。
任何帮助将不胜感激,并提前致谢。
【问题讨论】:
-
使结构具有时间效率非常简单。您需要 两个 单独的整数成员:一个用于分配的数量,一个用于已使用元素的数量。现在,当使用的元素数量达到分配时,您不会将分配增加 1,而是将其 乘 2。从 16 个元素开始,例如。
标签: c memory-management realloc