我對某事感到困惑。內存分配和NULL指針
第一:
int *ptr;
ptr = malloc(10 * sizeof(int));
這種類型在運行時獲得動態(堆)存儲,而不是編譯時間像陣列。
malloc()
如果沒有內存,可能會返回NULL
。
而且NULL
是在標準C庫中的#define
#define NULL ((void *)0)
所以,如果malloc
回NULL
和處執行運行時,編譯器將如何替代NULL
與void *0
,我知道,任何文本替換髮生在預編譯階段
嚴格來說,'malloc'不會返回NULL。它返回一個類型爲「void *'的空指針。宏'NULL'被定義爲擴展爲一個表達式,該表達式的結果是一個類型爲「void *」的空指針,或者是一個整數常量(任何整數類型),其值爲0。因此,值'malloc'在失敗時返回等於'NULL',但不一定與'NULL'類型相同,並且肯定不是'NULL'本身,因爲'NULL'是一個宏,它沒有任何意義一個函數來「返回一個宏」。函數返回值。 –