C++中的删除操作

delete operation in C++

我不明白delete是什么意思。

例如下面的代码中,delete ptr;所以pointer variable ptr被删除了还是the memory ptr pointed to被删除了?

int *ptr = new int; 
*ptr = 7;  
delete ptr; 

so the pointer variable ptr is deleted or the memory ptr pointed to is deleted?

ptr指向的内存已删除(即标记为空闲 - 内容可能仍然存在,但是,正如@JonTrauntvein 还提到的那样,根据实现情况,内存也可能会被某种模式覆盖——删除后永远不应访问它)。

指针本身没有改变,仍然包含相同的值(即它指向的内存地址),但是[=35=是一个好习惯]null删除后的指针,即ptr = NULL;.

此内存已通过 new int 在堆上分配,应始终通过 delete 释放。


int *ptr = new int; 

-> 内存在堆上分配 - 数量:sizeof(int) - ptr 指向该内存位置。

*ptr = 7;  

-> 值 7 被放置在分配的内存中。

delete ptr; 

-> 分配的内存(包含 7)已 删除 (即标记为空闲以供其他用途)。 ptr 仍然指向那个释放的内存位置。访问无效,所以指针应该设置为NULL.