C new括號問題

2021-07-30 14:07:52 字數 698 閱讀 6123

括號分為兩種,中括號或小括號()。

為方便說明,定義指標型別為class test, 指標為

test *ptest;

一、 中括號的情況。

中括號是用來標示申請的是乙個物件,還是一組物件。

1 沒有中括號時,即ptest = new test; 這時ptest得到的是乙個物件*ptest, 釋放時使用delete ptest;

2 帶有中括號時,在中括號中需要有乙個正整數引數。

ptest = new test[n];

n可以是變數,也可以是常量。

這時申請到的ptest指向的空間是n個連續的物件ptest[0],ptest[1]...ptest[n-1],即可以當做乙個陣列使用。

釋放時需要呼叫delete ptest;

二、小括號的情況。

小括號是用來指定初始化引數,用於類指標時,就是指定呼叫哪個建構函式。

1 有小括號時,小括號中可以有若干引數,也可以沒有引數。

比如ptest = new test(); 這樣在構造時就會呼叫無參構造test();

ptest = new test(1); 就會呼叫建構函式test(int),即乙個整型引數的建構函式。

2 沒有小括號時,預設呼叫無參構造。

即ptest = new test;

和ptest = new test();是一樣的。

關於C new問題個人小結

最近剛剛接觸攝像頭影象捕獲的內容。用vc6.0在xp下弄。抓捕執行緒一開就發現記憶體狂漲,過幾分鐘就奔潰了。仔細檢查才發現在給char 物件分配記憶體後,釋放記憶體不對。分配使用的 const long c buffnum 640 480 8 lpbyte rgbbuff new byte c bu...

C new 解析過載

c 中new的總結 c new用法之一 new運算子 最常用的是作為運算子的new,比如 string str new string test new 作為運算子,new和sizeof一樣,是c 內建的,你不能對它做任何的改變,除了使用它。new會在堆上分配一塊記憶體,並會自動呼叫類的建構函式。c ...

c new失敗處理

在c語言中如果malloc calloc分配記憶體失敗的時候,會返回乙個空指標,但是在 中使用 new 分配記憶體的時候,標準規定new分配失敗時會丟擲異常,因此不能使用如下的方式判斷new是否成功,int p new int size if null p return 如果分配失敗,則以上 將是沒...