【发布时间】:2016-02-20 16:33:08
【问题描述】:
我听说过很多关于 C++ delete operator 并且到目前为止也使用过很多,但我不知道它的真正工作是什么.
我在网上看到的是关于“Deallocating storage space”的讨论,但对我来说完全理解这个问题并没有什么意义。
请看下面代码的sn-p。
int main()
{
int* p = new int(6);
cout << *p << endl;
delete p;
}
指针p 有自己的地址,因为它是一个变量(#1)。指针p 本身也有一个地址,因为它是一个指针(#2)。该对象(未命名)在其内存块中包含值 6,并且该内存块的地址与#2 的地址相同。 (因为指针使用该地址指向该对象。)
现在,地址#1 和#2 在执行delete; 后会发生什么?
C++ 语言对此有何看法?
以及各种编译器对案例的影响是什么?
【问题讨论】:
-
这是一个
delete表达式,而不是delete运算符的调用。后者是一个释放函数,通常由delete表达式调用。在delete表达式之后调用一个对象析构函数(或者对于一个数组,一个这样的序列)。
标签: c++ pointers delete-operator