#include
using namespace std;
struct node{
int u;
node(int uu = 0):u(uu){
//cout << "create" << endl;
~node(){
u = -1000;
//cout << "delete/n";
int main(){
node mem[100];
node *p = mem;
node *q = new (p)node(10);
cout << p << ' ' << q << ' ' << mem << endl;
cout << q->u << endl;
q->~node();
node *r = new(p)node(20);
cout << r->u << endl;
for(int i = 0; i < 10; ++i)
cout << mem[i].u << endl;
return 0;
node *q = new (p)node(10); 就是從p為首位址分配一段記憶體給q,這段記憶體是已經預先開闢的,可能是用來共享的吧,所以不用的時候要掉用析構函式而不是delete。
C new 失敗的處理
我們都知道,使用 malloc calloc 等分配記憶體的函式時,一定要檢查其返回值是否為 空指標 亦即檢查分配記憶體的操作是否成功 這是良好的程式設計習慣,也是編寫可靠程式所必需的。但是,如果你簡單地把這一招應用到 new 上,那可就不一定正確了。我經常看到類似這樣的 int p new int...
C new失敗的處理
我們都知道,使用 malloc calloc 等分配記憶體的函式時,一定要檢查其返回值是否為 空指標 亦即檢查分配記憶體的操作是否成功 這是良好的程式設計習慣,也是編寫可靠程式所必需的。但是,如果你簡單地把這一招應用到 new 上,那可就不一定正確了。我經常看到類似這樣的 int p new int...
c new的用法總結
c 中,new的用法很靈活,這裡進行了簡單的總結 1.new 分配這種型別的乙個大小的記憶體空間,並以括號中的值來初始化這個變數 2.new 分配這種型別的n個大小的記憶體空間,並用預設建構函式來初始化這些變數 include include using namespace std int main...