cc1plus.exe:-1: error: out of memory allocating 65536 bytes

概述

QT在編譯大型項目時,有時會出現cc1plus.exe: -1: error: out of memory allocating 65536 bytes錯誤提示,可能原因是cc1plus.exe應用程序內存溢出。不管是在32位,還是64位的windows平臺,對於32位的應用程序,默認只能使用最大2GB的內存空間。

解決辦法

問題概述

32位的尋址空間爲4GB,對於32位的應用程序最大隻能使用4GB的內存。然而除了應用程序本身要用內存,操作系統內核也需要使用。應用程序使用的內存空間分爲用戶空間和內核空間,每個 32 位程序的用戶空間可獨享前 2GB 空間(指針值爲正數),而內核空間爲所有進程共享 2GB 空間(指針值爲負數)。所以,32 位應用程序實際能夠訪問的內存地址空間最多隻有 2GB。

第一步

*.pro文件中添加

CONFIG += resources_big

第二步

點擊Qt界面的項目按鈕,將構建步驟中的Parallel jobs選項改小一點。
在這裏插入圖片描述

第三步

打開VS 開發人員命令提示符,輸入下述命令,將用戶空間內存設置爲3GB

bcdedit /set IncreaseUserVa 3072

編輯應用程序cc1plus.exe,使其可以訪問大於2GB的內存空間

editbin /LARGEADDRESSAWARE <path>/cc1plus.exe

查看是否配置成功

dumpbin /headers <path>/cc1plus.exe | more

在這裏插入圖片描述
如果出現Application can handle large (>2GB) address,則說明配置成功。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章