【发布时间】:2026-02-05 14:15:01
【问题描述】:
我在那个 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 中使用它可以正常工作。
【问题讨论】:
-
指向'matr'的指针是否存储在lua解释器中?也许解释器在数组被重新分配后的某个地方使用了旧指针。
-
mtr 是 c 中结构的一部分。并且该结构表示为 lua 的用户数据。
-
到达“g”键并不比到达撇号更难。只是说。