C new和delete的使用

2021-07-02 16:51:59 字數 1983 閱讀 6758

new和delete已經完全包含malloc和free的功能,並且更強大、方便、安全。使用動態分配記憶體時不能忘記釋放記憶體,不要忘記出錯處理!下面先看new和delete的基本使用方法。

複製

純文字新視窗

#include

using

namespace std;

intmain()

//釋放記憶體

delete i;

delete j;

delete f;

delete

iarr;

//注意陣列的刪除方法

return0;

}

#include using namespace std;

int main ( )

//釋放記憶體

delete i;

delete j;

delete f;

delete iarr; //注意陣列的刪除方法

return 0;

}

輸出結果:

複製

純文字新視窗

#include

#include

using

namespace std;

intmain()

delete

arr;

//例外出錯處理

trycatch

(bad_alloc

xa)//強制例外時不丟擲錯誤,這時必須要判斷指標

double

*ptr =

new(nothrow)

double

[100000

];if

(!ptr)

delete

ptr;

cout <<

"記憶體分配成功!"

<< endl;

return0;

}

#include #include using namespace std;

int main ( )

delete arr;

//例外出錯處理

try catch (bad_alloc xa)

//強制例外時不丟擲錯誤,這時必須要判斷指標

double *ptr = new(nothrow) double[100000];

if (!ptr)

delete ptr;

cout << "記憶體分配成功!" << endl;

return 0;

}

輸出結果:

記憶體分配成功!前面已經用了很多了。

複製

純文字新視窗

#include

using

namespace std;

class

classa

intgetx()}

;int

main()

cout <<

"x = "

<< p->

getx

()<< endl;

delete p;

//呼叫析構函式

return0;

}

#include using namespace std;

class classa

int getx()

};int main ( )

cout << "x = " << p->getx() << endl;

delete p; //呼叫析構函式

return 0;

}

執行結果:

x = 200

C new和delete的用法

對於計算機程式設計而言,變數和物件在記憶體中的分配都是編譯器在編譯程式時安排好的,這帶來了極大的不便,如陣列必須大開小用,指標必須指向乙個已經存在的變數或物件。對於不能確定需要占用多少記憶體的情況,動態記憶體分配解決了這個問題。new和delete運算子是用於動態分配和撤銷記憶體的運算子。一 new...

C New和Delete 用法知其然

new和delete都是c 常用關鍵字,但是內部原理著實不簡單,我此篇是站在淺學用之的角度來歸納其表面使用和淺層原理。如果想深入理解這兩個關鍵字我推薦一下這篇部落格 首先在用法明確幾點 1.他們是系統關鍵字。2.他的標準實現在c 標準標頭檔案是 include 實際上引用了的話會間接引用到 3.我們...

c new和delete簡單探索

使用標準庫函式operator new或者operator new在堆記憶體中分配出一塊足夠大的記憶體 呼叫相應的建構函式構造出物件並賦初值,物件安排在步驟1的記憶體上 定位new 返回指向這塊記憶體的指標 呼叫物件的析構函式 呼叫標準庫函式operator delete或者operator del...