fatal error C1076: compiler limit : internal heap limit reached; use /Zm to specify a higher limit


最近想用一下Xtreme ToolkitPro 界面庫,安裝后用VC6根據向導 產生一個工程,編譯時出現如下的錯誤:

fatal error C1076: compiler limit : internal heap limit reached; use /Zm to specify a higher limit

意思是:編譯器限制:內部堆達到了最大的限制。使用/zm來指定一個更大的限制值。

 

解決辦法如下:

工程->設置->c++選項卡,下面有個工程選項(O),在編輯框中參數最后面加上/Zm1000即可,或者/Zm2000,只要是倍數即可,微軟的解釋如下:

/Zm(指定預編譯頭的內存分配限制)

 

確定編譯器對預編譯頭的內存分配限制。

/Zmnumber

參數 number

比例因子,用於為預編譯頭確定編譯器的內存分配限制。

備注

number 參數是默認值為 100 的比例因子,它指定內存分配為 50 MB。最大值為 2000。下表說明數字如何修改內存分配。

內存分配

10

5.0 MB

100

50 MB

200

100 MB

1000

500 MB

2000

1000 MB

在早期的 Visual C++ 版本中,編譯器使用了大量的離散堆,每個堆都有一定的限制。編譯器現在可以根據需要使堆動態增大,只要求分配給預編譯頭的內存的大小固定不變。只有在極少數涉及非常大或非常復雜的程序的情況下,才會導致超出預編譯頭的堆大小限制。如果程序超過這些限制,請使用 /Zm 調整所有限制的總大小。

大多數情況下,並不需要使用此編譯器選項。如果編譯程序時出現錯誤信息,並且該錯誤信息報告了 /Zm 應該具有的值,則使用此選項。
MSDN對這個作如下解釋:

“/Zm(指定預編譯頭的內存分配限制)
     確定編譯器對預編譯頭的內存分配限制。
     在早期的 Visual C++ 版本中,編譯器使用了大量的離散堆,每個堆都有一定的限制。編譯器     現在可以根據需要使堆動態增大,只要求分配給預編譯頭的內存的大小固定不變。只有在極     少數涉及非常大或非常復雜的程序的情況下,才會導致超出預編譯頭的堆大小限制。如果程     序超過這些限制,請使用 /Zm 調整所有限制的總大小。

     大多數情況下,並不需要使用此編譯器選項。如果編譯程序時出現錯誤信息,並且該錯誤信     息報告了 /Zm 應該具有的值,則使用此選項。”
啊,我的程序也能算作“極少數涉及非常大或非常復雜的程序”?

MSDN上面給了幾個解決方案,不過說的基本沒用。可能是我使用vc6的原因,所以還得自己想辦法

解決方案:

工程->設置->C/C++選項卡
下面有“工程選項”的一個命令區
在命令行的末尾加上
/Zm1000


改為/Zm2000也行,是整百的都可以

重新編譯,OK


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM