C++學習筆記2023-03-18

  • new和delete運算符學習筆記

int *p = new int[10];  //分配10個int型的內存空間

1.new int[10]不可以寫成 int new[10]

正確的語法是 int* new = new int[10]。其中,new int[10]用于在堆上分配一個包含10個整數的數組,并返回數組的首個元素的指針,而int* new聲明了一個指針變量new,并將其初始化為指向這個數組的第一個元素的指針。

delete[] p;

2.delete[] p不可以寫成delete[p]

  • delete[] p可以寫成delete[]p(可以寫成delete[]p,但是為了增強代碼的可讀性,建議在delete和數組名之間添加空格,即寫成delete[] p。)

正確的用法是delete[] p,中括號需要放在delete關鍵字的后面,表示釋放一個數組。如果寫成delete[p],則會被解釋為“在p指向的地址處調用一個名為operator delete[]的函數”,這不是正確的語法,可能會導致未定義的行為。

3.在C語言中,動態(tài)分配內存用 malloc() 函數,釋放內存用 free() 函數。如下所示:

int *p = (int*) malloc( sizeof(int) * 10 );  //分配10個int型的內存空間
free(p);  //釋放內存

free() 函數用于釋放動態(tài)分配的內存空間。在程序中使用 malloc() 或 calloc() 分配內存后,應該使用 free() 函數將其釋放,避免內存泄漏和浪費。free() 函數接受一個指針參數,指向要釋放的內存區(qū)域的起始地址,然后將該內存區(qū)域標記為可用狀態(tài),以便下次 malloc() 或 calloc() 分配時可以重新使用。釋放已經釋放過的內存或非動態(tài)分配的內存會導致程序崩潰,因此應該避免這種情況的發(fā)生。

1.malloc函數函數定義
其函數原型為void malloc(unsigned int size);其作用是在內存的動態(tài)存儲區(qū)中分配一個長度為size的連續(xù)空間。 2.此函數的返回值是分配區(qū)域的起始地址,或者說,此函數是一個指針型函數,返回的指針指向該分配域的開頭位置。
3.因此如下(需要 (type*)
強制轉換成相應類型的指針)

type *var_name = (type*)malloc(sizeof(type)*num);

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容