您好,登錄后才能下訂單哦!
C++ 的動態內存分配庫函數主要用于在程序運行時分配和釋放內存。這些函數包括:
new
和 delete
:用于分配和釋放單個對象的內存。
new
用于為對象分配內存,并返回指向該對象的指針。如果分配失敗,它會拋出一個 std::bad_alloc
異常。delete
用于釋放由 new
分配的內存。它調用對象的析構函數,然后釋放內存。示例:
int* p = new int; // 分配一個 int 類型的內存空間
*p = 42; // 給這個 int 賦值
delete p; // 釋放內存
new[]
和 delete[]
:用于分配和釋放對象數組的內存。
new[]
用于為對象數組分配內存,并返回指向第一個對象的指針。如果分配失敗,它會拋出一個 std::bad_alloc
異常。delete[]
用于釋放由 new[]
分配的內存。它調用數組中每個對象的析構函數,然后釋放內存。示例:
int* arr = new int[5]; // 分配一個包含 5 個 int 的數組
arr[0] = 42; // 給第一個 int 賦值
delete[] arr; // 釋放內存
malloc()
和 free()
:這些是 C 語言中的內存分配和釋放函數,也可以在 C++ 中使用。但是,它們不會調用對象的構造函數或析構函數。
malloc()
用于分配指定大小的內存塊。如果分配成功,它返回指向內存塊的指針;否則,返回 nullptr
。free()
用于釋放由 malloc()
分配的內存塊。示例:
#include <cstdlib>
int* p = (int*) malloc(sizeof(int)); // 分配一個 int 類型的內存空間
*p = 42; // 給這個 int 賦值
free(p); // 釋放內存
注意:在 C++ 中,通常建議使用 new
和 delete
(或 new[]
和 delete[]
)而不是 malloc()
和 free()
,因為它們會自動處理對象的構造和析構。此外,使用智能指針(如 std::unique_ptr
和 std::shared_ptr
)可以更好地管理動態分配的內存,避免內存泄漏和其他問題。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。