如果我在不删除第一个内存的情况下使用指针创建新内存会发生什么
What happens if I create new memory with a pointer without deleting the first one
如果我有一个已经被用来创建new[]
内存的指针。
然后在不删除第一个 on 或将其设置为 nullptr
的情况下再次使用它,到底发生了什么?编译器会自行删除第一个还是内存变得不可访问?
您之前分配的缓冲区仍由您的进程拥有,但无法访问(因为您不再跟踪其指针),并且您无法释放它。它将保持分配状态,直到程序终止。
这就是所谓的 memory leak.
编译器什么都不做。
正如您所怀疑的那样,内存变得不可访问(因为您不再拥有它的地址),但它仍然保留供您使用(意味着浪费)。
首先将它设置为 nullptr 没有帮助,您必须释放它。
如果我有一个已经被用来创建new[]
内存的指针。
然后在不删除第一个 on 或将其设置为 nullptr
的情况下再次使用它,到底发生了什么?编译器会自行删除第一个还是内存变得不可访问?
您之前分配的缓冲区仍由您的进程拥有,但无法访问(因为您不再跟踪其指针),并且您无法释放它。它将保持分配状态,直到程序终止。 这就是所谓的 memory leak.
编译器什么都不做。
正如您所怀疑的那样,内存变得不可访问(因为您不再拥有它的地址),但它仍然保留供您使用(意味着浪费)。
首先将它设置为 nullptr 没有帮助,您必须释放它。