首页 > 代码库 > new和delete

new和delete

转载请注明原文出处,http://www.cnblogs.com/flyingcloude/p/6992498.html

 

#include <iostream>
using namespace std;


int main()
{
        int* ptr = new int;
        *ptr  = 123;
        *(ptr + 1) = 456;
        int* ptr_new = ptr;
        delete ptr;
        cout << ptr_new[0] << " " << ptr_new[1] << ‘\n‘;

}

今天写了这么一段代码,居然能够安然无恙的运行出结果。在我看来,这段代码,编译器应该给我报错了,明明已经溢出了,很危险的代码。

在VC和VS2010下,运行到delete ptr就没有反应了。

g++能够运行出 0   456的结果。

后来去看了Efficient C++的内存管理那章节的operator  new和operator delete,

知道此处的new int的分配内存的大小应该是1,那么就传递给operator delete的大小也是1。

不知道运行结果是不是这样的原因。

 

转载请注明原文出处,http://www.cnblogs.com/flyingcloude/p/6992498.html

new和delete