我在我的一个项目中使用Gnome libglib并遇到了一个奇怪的错误。我可以输入GList的元素数量看起来限制为45.在第45个元素,它给出了这个错误
40 counter
41 counter
42 counter
43 counter
44 counter
45 counter
*** Error in `./a.out': free(): invalid next size (normal): 0x0000000001be7e00 ***
Aborted (core dumped)
以下是产生此错误的函数
`GList* getMeAGlist(int size)
{
GList* test = NULL;
printf("%d\n",size);
for(int i=0;i<size;i++)
{
printf("%d counter\n",i);
test = g_list_append(test,NULL);
}
return test;
}`
非常感谢您的帮助。
答案 0 :(得分:1)
你包含的代码看起来很好,而且GLib没有这样的限制:我可以轻松地用100000作为参数调用你的函数并且它有效(我没有尝试使用更大的数字只是因为对于大型列表,使用g_list_append()
的速度很慢。
从错误消息中我猜测您正在尝试拨打free()
未分配给malloc()
和朋友或已被释放的内容。您是否在没有任何其他代码的情况下尝试了上述函数 - 只是调用函数并返回的main()?