windows使用一組固定的範圍來分割程序的4gb虛擬位址空間,因此有時可以通過檢視指標的返回值來判斷指標是否有效。
虛擬位址空間
大小範圍
作用0x00000000~0x0000ffff
64kb
不能用來檢測空指標賦值(訪問衝突)
0x00010000~0x7ffeffff
64kb~2gb-64kb
win32程序私有(非保留),用於程式和資料
0x7fff0000~0x7fffffff
2gb-64kb~2gb
不能用來防止覆蓋os分割槽(訪問衝突)
0x80000000~0xffffffff
2gb~4gb
為作業系統保留,不可訪問(訪問衝突)
0x00030000~0x0012ffff
執行緒棧0x00130000~0x003fffff
堆(有時堆位於此處)
0x00400000~0x005fffff
可執行**
0x00600000~0x0fffffff
堆(有時堆位於此處)
0x10000000~0x5fffffff
0x77000000~0xffffffff
apvapi32.dll、comctl32.dll、gdi32.dll、kernel32.dll、ntdll.dll、shell32.dll、user32.dll
全面介紹windows記憶體管理機制及c++記憶體分配例項(一):程序空間
記憶體分布:
虛擬位址空間
當處理器讀或寫入記憶體位置時,它會使用虛擬位址。作為讀或寫操作的一部分,處理器將虛擬位址轉換為實體地址。通過虛擬位址訪問記憶體有以下優勢 程序可用的虛擬位址範圍稱為該程序的 虛擬位址空間 每個使用者模式程序都有其各自的專用虛擬位址空間。對於 32 位程序,虛擬位址空間通常為 2 gb,範圍從 0x0...
虛擬位址空間
14 共 14 對本文的評價是有幫助 評價此主題 程序可用的虛擬位址範圍稱為該程序的 虛擬位址空間 每個使用者模式程序都有其各自的專用虛擬位址空間。對於 32 位程序,虛擬位址空間通常為 2 gb,範圍從 0x00000000 至 0x7fffffff。對於 64 位程序,虛擬位址空間為 8 tb,...
虛擬位址空間
1 text 段 存放程式執行的一塊記憶體區域,此區域大小在執行之前就已經確定下來了。2 data資料段 全域性初始化資料區 靜態資料區 只初始化一次,指用來存放程式中已初始化的全域性變數的一塊記憶體區域 已經初始化的全域性變數 靜態變數和常量 3 bss未初始化資料區 用來存放程式中未初始化的全域...