如果我使用指针创建新内存而不删除第一个内存会发生什么

时间:2017-05-19 15:44:16

标签: c++ pointers new-operator

如果我有一个已用于创建new[]内存的指针。 然后再次使用它而不删除第一个或将其设置为nullptr,究竟发生了什么?编译器是自己删除第一个还是内存无法访问?

2 个答案:

答案 0 :(得分:7)

您分配的前一个缓冲区由您的进程保留,但是无法访问(因为您不再跟踪其指针),并且您无法释放它。它将保持分配,直到程序终止。 这就是所谓的memory leak

答案 1 :(得分:2)

编译器没有做任何事情 正如您所怀疑的那样,内存将无法访问(因为您不再拥有其地址),但它仍然保留供您使用(意味着浪费)。

首先将它设置为nullptr无效,您必须将其释放。