error C3859: 超过了PCH的虚拟内存范围;请使用“-Zm33”或更大的命令行选项重新编译
編譯 ORB_SLAM的Release版本時,出現了此問題:
??????????? 錯誤 2 error C3859: 超過了 PCH 的虛擬內存范圍;請使用“-Zm465”或更大的命令行
修改方法:
????? 1. 找到 工程->屬性->c/c++->命令行->其他選項
???? 2. 輸入/Zm100,其中后面的數字可以更大
原因:
???? 為了加快boost的編譯,使用的預編譯頭。而且加的boost的頭文件比較多,導致pch文件超過了默認值。
定義:
/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
總結
以上是生活随笔為你收集整理的error C3859: 超过了PCH的虚拟内存范围;请使用“-Zm33”或更大的命令行选项重新编译的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 城镇环境卫生整治方案3篇
- 下一篇: 牧童和狼教案一等奖