int * p = malloc(0);/*malloc分配了0個位元組嗎,如果是那麼p指向誰呢,是null嗎*/
free(p);/*假如malloc分配了0個位元組,p指向了null,那麼free(null)不會出現段錯誤嗎*/
/*****************************
****2023年12月25日16:09:44
**測試環境:redhat 6.4
**測試int * p = malloc(0);p是否指向null
*******************************/
#include#includeint main(void)
# include
# include
int num1;/*bss段*/
int num2 = 2;/*全域性區*/
char * str1 = "str1";/*文字常量區*/
int main(void)/*死迴圈以保證程序不會結束,方便檢視/proc/pid/maps檔案*/
free(p);
return
0;}
記憶體的分段 分頁機制
摘錄自 程式設計師的自我修養 1.5節 早期的計算機中,記憶體有限,在執行多個程式時有如下問題 1.位址空間不隔離 程式直接訪問物理記憶體,程式間互相影響 2.記憶體使用效率低 需要將整個程式載入記憶體,程式切換時候,在記憶體和磁碟間交換效率低下 3.程式執行位址不確定 因為直接訪問物理記憶體,使用...
從Linux分頁機制到Linux記憶體管理
要理解linux記憶體管理子系統,先要熟悉一些概念 頁框,頁幀 傳統上,把記憶體視為連續的位元組,即記憶體為位元組陣列,記憶體單元的編號 位址 可作為位元組陣列的索引。分頁管理時,將若干位元組視為一頁,比如4k bytes 此時,記憶體變成了連續的頁,即記憶體為頁陣列,每一頁物理記憶體叫頁幀,以頁為...
虛擬記憶體和分頁機制和記憶體對映的不同
這是我找到的關於虛擬記憶體和分頁機制的我個人比較容易理解的一篇文章。虛擬儲存器的思想是程式 資料和堆疊的大小都有可能超過物理記憶體大小,由作業系統把當前使用的放在記憶體,而不需要的放在磁碟。而絕大部分作業系統使用的虛擬儲存器技術就是分頁技術。在虛擬儲存器中,程式所產生的位址為虛擬位址,虛擬位址構成了...