gpt4 book ai didi

分配时从 lua 调用'c 崩溃

转载 作者:太空宇宙 更新时间:2023-11-04 05:31:50 25 4
gpt4 key购买 nike

我在那个 for 循环中遇到了一个疯狂的错误

matr=realloc(matr, newmax*sizeof(matr*));

for (i=0; i<newmax; i++){
matr[i]=realloc(matr[i], newmax*sizeof(int));
}

matr 是一个多维数组:int **matr。我需要调整列和行的大小。第一行调整列的大小,for 循环调整每一行的大小。它在 c 中运行良好。现在我正在为 lua 开发一个库,它在这里崩溃了。编译工作也很好。但是从 lua 调用崩溃了

lua: malloc.c:3552: mremap_chunk: Assertion `((size + offset) & (mp_.pagesize-1)) == 0' failed.

我不知道,因为它在 c 中使用它工作正常。

最佳答案

调用realloc后,新分配部分的内容是不确定的。这意味着随后在新行上调用 realloc 可能会失败,因为它会尝试重新分配无效指针。

您可以在旧行上使用 realloc 并在新行上使用 malloc 来解决此问题。或者您可以在第一个 realloc 之后将新部分置零,然后您的循环将按原样工作:

matr=realloc(matr, newmax*sizeof(matr*));
for (i=oldmax; i<newmax; i++)
matr[i] = NULL;

for (i=0; i<newmax; i++){
matr[i]=realloc(matr[i], newmax*sizeof(int));
}

关于分配时从 lua 调用'c 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2903887/

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