gpt4 book ai didi

c - GList 行为错误 - 下一个大小无效(正常)

转载 作者:行者123 更新时间:2023-11-30 15:24:44 27 4
gpt4 key购买 nike

我在我的一个项目中使用 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;
}`
  • 可以插入到 GList 中的元素数量是否有限制? (我应该以不同的方式分配列表吗?)
  • 我尝试过设置 ulimit,内存限制设置为“无限制”
  • 我在多台机器上尝试过这段代码,它在第 45 个元素处退出
  • 我正在使用最新的 GLib 版本

非常感谢您的帮助。

最佳答案

您包含的代码看起来不错,并且 GLib 没有这样的限制:我可以轻松地使用 100000 作为参数调用您的函数,并且它可以工作(我没有尝试使用更大的数字,只是因为使用 g_list_append() 对于大列表来说很慢)。

根据错误消息,我猜测您正在尝试对未使用 malloc() 和 friend 分配或已释放的对象调用 free() 。您是否尝试过没有任何其他代码的上述函数——只是一个调用您的函数并返回的 main() ?

关于c - GList 行为错误 - 下一个大小无效(正常),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28269862/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com