-
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);