【发布时间】:2020-07-18 12:58:36
【问题描述】:
int main()
{
int *memory = new int[5];
cout << "Memory starts at: " << &memory[0]; // 0x56225460beb0
memory = new int[10];
cout << "\nMemory starts at: "<< &memory[0]; // 0x56225460c2e0
// different
cout << '\n';
return 0;
}
用new初始化时,有没有办法在C++中扩展之前初始化的内存。上面的代码最终为memory 创建了一个新的内存位置。这是否也意味着之前分配的内存最终占用了我的内存空间,因为我没有delete它
【问题讨论】:
-
使用
std::vector<int> -
@PaulMcKenzie 它也会重新分配。所以不要扩展之前的内存。
-
OP 的代码中没有进行重新分配,只有内存泄漏。
-
@PrateekParasha -- 你真正想解决什么问题?这变成了XY Problem
-
您无法展开
std::array。
标签: c++ memory-management new-operator