我对在C ++中使用realloc()函数有疑问。我需要它通过删除第一项基本上改变数组的大小。这就是我所做的
cell* Queue::pull() {
cell* data = cellArray[0];
arrayLen--;
cell** temp = (cell**)realloc(cellArray+1, sizeof(cell*)* (arrayLen));
if (temp == NULL) {
return 0;
}
cellArray = temp;
return data;
}
arrayLen是整数,它存储队列的当前长度,而cellArray是先前分配和填充的cell *数组。
cell** cellArray;
int arrayLen = 0;
我的问题是:这会导致内存泄漏吗? realloc是否释放了数组第一项所使用的空间,或者这与以下内容基本相同:
cell** temp = cellArray+1;
提前谢谢。
答案 0 :(得分:0)
如果扩展分配的内存,则以下情况属实:
realloc ()
将返回原始指针。并且你应该注意:如果调用成功,无论当前的可用空间后面的内存空间是否满足要求,都会释放原始指针,返回指针,虽然返回指针和原始指针是相同的,不能再次释放原始指针