我知道,調用delete on一個使用placement new創建的變量然後訪問該內存塊具有未定義的行爲。關於展示位置刪除新
int* x = new int[2];
char* ch = new(x) char();
*ch = 't';
delete ch;
但如果內存塊,而不是堆,被分配在堆棧中,然後我們呼籲刪除該變量,然後訪問內存,我得到一個異常的塊類型無效。
int x[2];
char* ch = new(x) char();
*ch = 't';
delete ch;
這樣的問題清單是:
- 是由於調用刪除堆棧上的異常?
- 在堆棧上的內存塊上使用放置新功能可以嗎?
- 如果是,那麼我應該如何刪除字符指針。
- 是否可以使用放置新功能在一塊 內存上分配多個變量?
http://www.parashift.com/c++-faq/placement-new.html – Drax