码迷,mamicode.com
首页 > 其他好文 > 详细

new和delete

时间:2017-06-12 14:42:01      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:分配   没有   g++   html   target   ace   std   c++   www   

转载请注明原文出处,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

标签:分配   没有   g++   html   target   ace   std   c++   www   

原文地址:http://www.cnblogs.com/flyingcloude/p/6992498.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!