c++中 new的使用方法
1. new( )
分配這種類型的一個大小的內存空間,並以括號中的值來初始化這個變量;
2. new[ ] 分配這種類型的n個大小的內存空間,並用默認構造函數來初始化這些變量;
char*
p=new char[6];
strcpy(p,"Hello");
3.
當使用new運算符定義一個多維數組變量或數組對象時,它產生一個指向數組第一個元素的指針,返回的類型保持了除最左邊維數外的所有維數。例如:
返回的是一個指向int的指針int*
int (*p2)[10] = new
int[2][10];
new了一個二維數組,
去掉最左邊那一維[2], 剩下int[10], 所以返回的是一個指向int[10]這種一維數組的指針int (*)[10].
int
(*p3)[2][10] = new int[5][2][10];
new了一個三維數組, 去掉最左邊那一維[5], 還有int[2][10],
所以返回的是一個指向二維數組int[2][10]這種類型的指針int (*)[2][10].
C++中用new動態創建二維數組的格式一般是這樣:
TYPE (*p)[N] = new TYPE [][N];
其中,TYPE是某種類型,N是二維數組的列數。採用這種格式,列數必須指出,而行數無需指定。在這裏,p的類型是TYPE*[N],即是指向一個有N列元素數組的指針。
4.new創建對象
下面是自己總結的一些關於new創建對象特點:
new創建對象需要指針接收,一處初始化,多處使用
new創建對象使用完需delete銷燬
new創建對象直接使用堆空間,而局部不用new定義對象則使用棧空間
new對象指針用途廣泛,比如作爲函數返回值、函數參數等
頻繁調用場合並不適合new,就像new申請和釋放內存一樣
new創建對象例子:
CTest* pTest = new
CTest();
delete
pTest;
pTest用來接收對象指針。
不用new,直接使用類定義申明:
CTest
mTest;
此種創建方式,使用完後不需要手動釋放,該類析構函數會自動執行。而new申請的對象,則只有調用到delete時再會執行析構函數,如果程序退出而沒有執行delete則會造成內存泄漏。
CTest*
pTest = NULL;
但使用普通方式創建的類對象,在創建之初就已經分配了內存空間。而類指針,如果未經過對象初始化,則不需要delete釋放。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.