1. 程式人生 > >C語言--結構體指標需要malloc

C語言--結構體指標需要malloc

如果定義一個結構體型別的普通變數,可以不malloc動態申請記憶體,CPU會為這個結構體變數分配記憶體    

如果定義的是一個結構體的指標,CPU會為這個指標開闢記憶體,但是此時這個大小是4(如果是32位的CPU的話),所以這個空間不足以儲存結構體的資料成員,就會引發錯誤,此時必須要malloc申請一個,結構體型別大小的動態記憶體,用於資料成員儲存使用

拓展一下,malloc是動態申請,呼叫後會根據虛擬對映表去找實體記憶體,此時核心會先產生一個請求記憶體異常,然後根據這個異常再去為程式分配malloc的記憶體

另外注意,呼叫malloc後一定要free,且在free掉之後要賦值NULL,這個操作是一對一的