C ++中的删除操作

问题描述 投票:3回答:1

我不明白delete的意思。

例如,在下面的代码中,delete ptr;是删除pointer variable ptr还是删除the memory ptr pointed to

int *ptr = new int; 
*ptr = 7;  
delete ptr; 
c++ new-operator dynamic-memory-allocation delete-operator
1个回答
11
投票

因此指针变量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

© www.soinside.com 2019 - 2024. All rights reserved.