首页 > 代码库 > 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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。