error C3859关于这个错误?

 

今天在建立一个工程遇到了这个问题:
error C3859: 超过了 PCH 的虚拟内存范围;请使用“-Zm33”或更大的命令行选项重新编译

fatal error C1076: 编译器限制 : 达到内部堆限制;使用 /Zm 指定更高的限制

首先说下解决办法吧:

就是在  工程-》属性-》c/c++  -》命令行-》附加选项     输入/Zm100  或者 -/Zm100  其中后面的数字可以更大

后来差了下资料,msdn上说,

/Zm(指定预编译头的内存分配限额)

确定编译器分配的用于构造预编译头的内存量。

/Zmfactor
factor 一个比例因子,确定编译器用于构造预编译头的内存量。 factor 参数是编译器定义的工作缓冲区的默认大小所占的百分比。  factor 参数的默认值是 100 (%),但您可以指定更大或更小的数量。  在早期版本的 Visual C++ 中,编译器使用几个离散堆,每个堆都有一定的限制。  当前,编译器可根据需要动态增加堆,最多可增加到总堆大小限制,并且只需要固定大小的缓冲区即可构造预编译头。  因此,很少需要 /Zm 编译器选项。 如果在您使用 /Zm 编译器选项时,编译器用完堆空间,发出 C1060 错误消息,则您可能保留了太多的内存。  可考虑移除 /Zm 选项。 如果编译器发出  C1076 错误消息,则伴随的  C3859 消息会指定您在使用  /Zm 编译器选项重新编译程序时应使用的  factor  参数。 下表显示当您假定默认预编译头缓冲区的大小为 75 MB 时,factor 参数如何影响内存分配限制。

factor 的值

内存分配限制

10

7.5 MB

100

75 MB

200

150 MB

1000

750 MB

2000

1500 MB


对于编译的选项vs做了太多的事情,让我们好多都接触不到,如果在linux下面编程的话,就会了解到很多这些知识,有空一定要好好学习下linux。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值