error C3859: 超過了PCH的虛擬內存範圍;請使用“-Zm33”或更大的命令行選項重新編譯


產生的原因:
爲了加快boost的編譯,使用的預編譯頭。而且加的boost的頭文件比較多,導致pch文件超過了默認值。
解決的辦法:
1. 找到 工程->屬性->c/c++->命令行->其他選項
2. 輸入/Zm100,其中後面的數字可以更大
定義:
/Zm(指定預編譯頭的內存分配限額):確定編譯器分配的用於構造預編譯頭的內存量。格式:/Zmfactor。
factor:一個比例因子,確定編譯器用於構造預編譯頭的內存量。
factor 參數是編譯器定義的工作緩衝區的默認大小所佔的百分比。 factor 參數的默認值是 100 (%),但您可以指定更大或更小的數量。 在早期版本的 Visual C++ 中,編譯器使用幾個離散堆,每個堆都有一定的限制。 當前,編譯器可根據需要動態增加堆,最多可增加到總堆大小限制,並且只需要固定大小的緩衝區即可構造預編譯頭。 因此,很少需要 /Zm 編譯器選項。
如果在您使用 /Zm 編譯器選項時,編譯器用完堆空間,發出 C1060 錯誤消息,則您可能保留了太多的內存。 可考慮移除 /Zm 選項。 如果編譯器發出 C1076 錯誤消息,則伴隨的 C3859 消息會指定您在使用 /Zm 編譯器選項重新編譯程序時應使用的 factor 參數。

factor的值     內存分配限制
10                7.5 MB
100              75 MB
200              150 MB
1000            750 MB
2000            1500 MB
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章