C語言中 FREE釋放內存的時候,系統如何知道釋放多少字節的內存?
1 int * p = (int *)malloc(4);
2 char * p =(char *)malloc(4);
free(p);
FREE的時候,動態空間的內存初始地址是知道的,但是釋放多少自己的內存,這個信息在內存裡保存在哪呢? 單憑一個int *類型的指針變量中的地址,不足以知道要釋放多少字節,高手賜教,謝謝。注意了 我是想問,在內存中,P所指向的一塊區域,數據類型是啥,具體有多少數據類型,系統如何判斷?
即 1 和 2同樣釋放P 1中P所指的是INT 2中P所指的是CHAR 這個信息放在內存哪裡?
最佳回答:
它是根據 參數來決定釋放多少內存的,如果參數是 int *, 則釋放4個字節(vc6.0),因為各種數據類型所占的內存大小是不一樣的,而且,程序運行時,內存分成兩部分,一部分是代碼區,一部分是數據區,你說的信息應該是存放在數據區中。