我不明白delete
的意思。
例如,在下面的代码中,delete ptr;
是删除pointer variable ptr
还是删除the memory ptr pointed to
?
int *ptr = new int;
*ptr = 7;
delete ptr;
[因此指针变量ptr被删除或指向的内存ptr为删除了?
ptr
指向的指向的内存为已删除(即标记为空闲-内容可能仍然存在,但是,正如@JonTrauntvein所提到的那样,取决于可以覆盖内存的实现方式以及特定的模式-删除后绝对不能访问它。
指针本身不会改变,仍然包含相同的值(即它指向的内存地址),但是删除指针后将null当作好习惯,即[C0 ]。
此内存是使用ptr = NULL;
在堆上分配的,应该始终使用new int
释放。
delete
->内存在堆上分配-数量:int *ptr = new int;
-sizeof(int)
指向该内存位置。
ptr
->值*ptr = 7;
放置在分配的内存中。
7
->已分配的内存(包含7个)是deleted(即标记为空闲以用于其他用途)。 delete ptr;
仍指向该释放的内存位置。访问它无效,因此指针应设置为ptr
。