申請不到,因為64為系統在運行32位程序的時候只是為了向下兼容而已,對於32位程序來講,申請8G的存儲空間沒有任何意義,因為32位的程序最大尋址空間只有4G,32位程序在編譯之后的機器代碼也只有32位的尋址數(指針占4個字節),因此申請8G的空間是沒啥意義的,而且一般系統都會為每個進程設置一些資源限制,對於32位程序其能申請的內存量也遠遠小於4G可以看一下下面這個表
操作系統內部數據結構限制對比 IT168評測中心 分組 限制 64位Windows限制 類別 單個進程虛擬空間 4GB 16TB
用戶模式虛擬內存(32位應用程序,32位Windows)
2GB 3GB(使用4GT技術,同時應用程序需要使用IMAGE_FILE_LARGE_ADDRESS_AWARE參數編譯)
用戶模式虛擬內存(32位應用程序,64位Windows) 2GB /*這個j就是是32位程序運行在64位系統下的可用於malloc的最大虛擬內存*/ 4GB(應用程序使用IMAGE_FILE_LARGE_ADDRESS_AWARE參數編譯)
用戶模式虛擬內存(64位應用程序,32位Windows)
32位Windows不支持64位應用程序 用戶模式虛擬內存(64位應用程序,64位Windows)
x64 : 8TB(應用程序使用IMAGE_FILE_LARGE_ADDRESS_AWARE) 2GB(應用程序不使用IMAGE_FILE_LARGE_ADDRESS_AWARE)
IA64 : 7TB(應用程序使用IMAGE_FILE_LARGE_ADDRESS_AWARE)
內核模式虛擬內存 (32位Windows) 2GB 1GB(使用4GT技術)
內核模式虛擬內存 (64位Windows) 8TB