Realloc 调整大小数组
Realloc resizing array
我对 realloc(( 函数在 C++ 中的使用有疑问。我需要它通过删除第一项来基本上更改数组的大小。这就是我所做的
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;
提前谢谢你。
如果扩展分配的内存,则满足以下条件:
- 如果在内存空间
- 之后需要当前内存段,则直接扩展此内存空间,
realloc ()
将返回到原始指针。
如果当前内存 - 段后面的可用字节不够,则使用第一个内存块来满足此要求,将当前数据复制到新位置,并释放原始数据块,返回新的内存块位置。
- 如果应用失败,将返回NULL,此时,原始指针仍然有效。
并且要注意:如果调用成功,不管当前内存空间后面的可用空间满足要求,都会释放原始指针,返回一个指针,虽然返回的指针和原始指针是一样的,但说明不能再释放原始指针
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 声明后,gcc 的动态大小数组是否与标准数组有效相同?
- 将 int 数组转换为带有小数C++的双精度数组
- 如何将大括号初始值设定项用于动态大小数组和新数组?
- 对未知大小数组的引用的列表初始化:它是否应该推断数组大小?
- 返回指向固定大小数组C++的数组的指针
- 如何将小数数组转换为二进制数数组
- 对指向固定大小数组的指针数组的内存分配的解释
- 在 C++ 中创建固定大小的 int 数组的动态大小数组