VC++6.0编译错误-C1076 /Zm

[code=c][/code]
#include<iostream>
using namespace std;
int main()
{
     int ival=5;
     cout<<ival<<endl;
     system("pause");
     return 0;
}

//编译结果
/*
--------------------Configuration: example - Win32 Debug--------------------
Compiling...
example.cpp
fatal error C1076: compiler limit : internal heap limit reached; use /Zm to specify a higher limit
(译:致命错误C1076 :编译器限制:内部堆限制达到使用/ Zm的指定更高的限制)
Error executing cl.exe.
example.obj - 1 error(s), 0 warning(s)
*/
/* 出错情况介绍:
注释:在XP系统下使用Microsoft Visual C++ 6.0编译时出现上述错误。开始几次编写代码都可以得到可执行文件,但是一旦出现上面的编译错误后,不论编写多简单或多复杂的代码都会出现同样的编译错误。
    把程序拷贝到另一个没出现过此错误的XP系统Microsoft Visual C++ 6.0编译器进行编译时不会出错,
    在Win7 64bits 下使用Microsoft Visual Studio 2010运行该程序也能显示正确结果。
    在XP系统下先卸载VC++6.0后又重新安装另一个VC++6.0依然出现上述编译错误
*/

 

解决办法如下:(来源)http://www.cnblogs.com/hoiker/archive/2011/04/20/2021764.html

工程->设置->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 调整所有限制的总大小。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值