c++ - 如果将数据移动到不同的 block ,c++ realloc 函数是否对旧数据 block 应用删除操作?

标签 c++ memory-management dynamic-memory-allocation realloc

函数可能会将内存块移动到新位置,在这种情况下会返回新位置。
例如我有一个指向数组的指针:

int *arr; // somewhere next it initialized, filled with elements and etc

某处我需要:

void* location = realloc(arr, NEW_SIZE);

旧的内存块位置会发生什么?

如果 realloc 返回不是数学运算的指针到 arr,我应该使用下一个代码吗?:

delete arr;
arr = (int*)location;

最佳答案

realloc 函数继承自优秀的旧 C。它不运行析构函数或执行任何其他 C++ 魔法。它也只能应用于使用 malloc(和 friend )分配的 block ——它不能用于使用“new”分配的 block

关于c++ - 如果将数据移动到不同的 block ,c++ realloc 函数是否对旧数据 block 应用删除操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10648870/

相关文章:

c++ - 通过引用传递 C++ 迭代器有什么问题?

c++ - 您可以在同一对象中拥有对成员 std::shared_ptr<variable> 的成员引用吗?

c - 内存是在函数结束时用 malloc 分配还是用 calloc 释放?

rust - 使用 Box 分配大型数组时,线程 '<main>' 已溢出其堆栈

c++ - 为什么不应该重写非虚拟函数

c++ - 以某种方式缓冲或包装 cin,以便我可以使用 tellg/seekg?

memory-management - PLC 梯形图逻辑 - 内存和处理管理

randomForest模型大小取决于训练集大小: A way to avoid?

c - 段故障错误:11 Known lines with Error

c++ - 后继AVL树c++