mki*_*ind 0 c malloc lua realloc
我在for循环中遇到了一个疯狂的错误
matr=realloc(matr, newmax*sizeof(matr*));
for (i=0; i<newmax; i++){
matr[i]=realloc(matr[i], newmax*sizeof(int));
}
Run Code Online (Sandbox Code Playgroud)
matr是一个多维数组:int**matr.我需要调整列和行的大小.第一行调整列大小,for循环调整每一行的大小.它在c中运行良好.现在我正在为lua工作,它崩溃了.compilin的工作也很好.但是从lua打来的电话崩溃了
lua: malloc.c:3552: mremap_chunk: Assertion `((size + offset) & (mp_.pagesize-1)) == 0' failed.
Run Code Online (Sandbox Code Playgroud)
我没有该死的想法,因为它在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));
}
Run Code Online (Sandbox Code Playgroud)