1. 程式人生 > >new和delete

new和delete

沒有 names ffi .com 傳遞 ptr 編譯器 html htm

轉載請註明原文出處,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