我对使用 malloc 和 realloc 很陌生,我有几个问题。
问题 1。
我正在制作的游戏允许您创建自己的空间芯片,知道这一点我想知道重新分配两倍于标准的当前内存量是否更好。或者按照为所需顶点重新分配 100 个额外空间的方式做一些事情?我自己认为第二种选择会更好,但也许有些我不知道。
问题2
如果我有一个 malloced arrays[20] [4] 我如何将它重新分配到 squares[100][4] 的大小?我是否将第一个数组重新分配到 100,然后将 4 个新点重新分配到 20-99?
问题 3
现在,当我重新分配数据时,会发生一些奇怪的事情。如果我设置了一个断点,一切都会很好,但如果我让代码同时工作,它就会崩溃。所以我猜有内存泄漏。现在这是我的 realloc 代码。
unsigned char *temp =( unsigned char* ) realloc(realSpaceship, gridSize*sizeof( unsigned char ));
if(temp != NULL)
{
realSpaceship = temp;
//free(temp); Line is now deleted at the advice of the helpfull people here.
}
else
{
//error
printf("realloc error\n");
free(realSpaceship);
}
我认为释放 temp 是一个好主意,但它只会使代码在不同的位置崩溃。
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!
我刚刚意识到问题不在于 realloc 而是其他地方。
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!
一点额外的信息。我正在使用 c++ 而且我也在使用 glm