c++ - 用另一个新语句重置动态数组,需要先删除吗?

标签 c++ arrays memory-management dynamic

如果我有类似的东西

int* thing;

thing = new int[10]

(more code...)

thing = new int[50];

我需要在它们之间做delete[] thing吗?为了确定/安全,因为无论如何我都会发帖,这样做没有任何问题吗?

最佳答案

为了安全起见,您应该始终删除在堆上分配的内存,否则会出现内存泄漏,这在未来可能会导致内存紧缩并导致您的应用程序崩溃。

//在栈上分配内存(栈内存一旦超出范围就会被删除,由编译器自动删除)

int* thing;   

//数组10分配在堆上(堆内存由用户负责删除,否则会内存泄漏)

thing = new int[10]

//理想情况下,你应该删除这里分配在堆上的内存,否则会出现内存泄漏,这可能导致将来内存紧缩:

(more code...)
delete []thing;

thing = new int[50];

关于c++ - 用另一个新语句重置动态数组,需要先删除吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43314491/

相关文章:

c++ - 免费的 C/C++ PDF 创建器库 Linux(不是 libharu)

c++ - 在带有类型保护的模板文件中使用前向声明

javascript - 检查数组的总和是否大于最大数,反之亦然 JavaScript

java - 编译器生成的相对地址以及它们如何在(最好是 java)字节码中表示?

c++ - 我不知道如何处理我的日历代码

c++ - 如何从 C++ 程序获取 Linux 上的主板 ID

security - SPA架构问题

android - 通过处理程序、消息和包最小化内存分配

javascript - 检查 Javascript 数组值是否连续且不相等

c++ - 设置动态数组的默认值