首页
社区
课程
招聘
一个C++编译的问题,请问应该怎样处理
发表于: 2004-12-11 16:26 5392

一个C++编译的问题,请问应该怎样处理

2004-12-11 16:26
5392
我用VC6.0编译附件中的程序(只有3行代码,有空的兄弟帮忙看看),总是提示

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

请问我应该怎样处理比较好呢?

我使用C-FREE编译器,就没有这个问题。
附件:11.rar

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (12)
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
2
这类问题发到csdn比较好
你的数组太大了,推里装不下
它叫你用/Zm就用Zm咯
在setting c++的options 里加
默认的是/Zm100,你先/Zm200,不行再加100,一直到通过为止吧
2004-12-11 19:32
0
雪    币: 3246
活跃值: (374)
能力值: (RANK:20 )
在线值:
发帖
回帖
粉丝
3
得在VC6 project的选项里给cl传递参数指定它使用大的堆,例如/Zm800。你那个数组太大导致编译器程序自己的堆溢出了。
2004-12-11 19:33
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
最初由 shoooo 发布
这类问题发到csdn比较好
你的数组太大了,推里装不下
它叫你用/Zm就用Zm咯
在setting c++的options 里加
默认的是/Zm100,你先/Zm200,不行再加100,一直到通过为止吧
........


我已经设置到Zm3000了,还是不能,真的想不通,请把操作步骤说说,我的设置如下
/nologo /ML /W3 /GX /D "WIN32" /D "NDEBUG" /D "_MBCS" /Fp"Release/GXDOS2.pch" /YX /Fo"Release/" /Fd"Release/" /FD /D/Zm3000 "_CONSOLE" /c
2004-12-11 20:02
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
最初由 blowfish 发布
得在VC6 project的选项里给cl传递参数指定它使用大的堆,例如/Zm800。你那个数组太大导致编译器程序自己的堆溢出了。


没有找到“cl传递参数指定它使用大的堆”这个选项,还请版主写一下这个选项的设置步骤,谢谢!!!
2004-12-11 20:04
0
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
6
最初由 ksgkgs 发布


我已经设置到Zm3000了,还是不能,真的想不通,请把操作步骤说说,我的设置如下
/nologo /ML /W3 /GX /D "WIN32" /D "NDEBUG" /D "_MBCS" /Fp"Release/GXDOS2.pch" /YX /Fo"Release/" /Fd"Release/" /FD /D/Zm3000 "_CONSOLE" /c


帮你试了,zm300就可以了
project ->settings->c/c++栏->Project Options 窗口 最后加上/Zm300就可以了附件:11.rar_574.rar
2004-12-11 20:13
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
最初由 shoooo 发布


帮你试了,zm300就可以了
project ->settings->c/c++栏->Project Options 窗口 最后加上/Zm300就可以了附件:11.rar_574.rar


按大哥的方法的确成功了,原来问题出在/Zm300前一定要留有空格,我这里没有注意,造成错误,谢谢指点!!!

我再修改了一下程序,按大哥的方法还是不能编译,请大哥指点

#include <iostream.h>

int main(int argc, char *argv[])
{
#include "drv.cpp" //我把数组放到这行来定义就不能通过编译了

        cout<<"Hello C-Free!"<<endl;
        return 0;
}
2004-12-11 21:08
0
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
8
最初由 ksgkgs 发布


按大哥的方法的确成功了,原来问题出在/Zm300前一定要留有空格,我这里没有注意,造成错误,谢谢指点!!!

我再修改了一下程序,按大哥的方法还是不能编译,请大哥指点
........


额,这么大的数组还是留在堆中吧,不要放进栈里了
如果硬要塞进去
前面加上
pragma comment(linker,"/stack:0x????????,0x????????")
前一个是保留栈的大小,你要算一下足够放你的数组
后一个是提交的页,默认是0x1000吧,我也没经验设多少好,也许0x2000吧
2004-12-11 21:39
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
最初由 shoooo 发布


额,这么大的数组还是留在堆中吧,不要放进栈里了
如果硬要塞进去
前面加上
........


大哥说的我也感觉很有道理,我只是想测试一下,看看效果如何而已。

另外大哥所说的“前面”是指什么的前面呢?

是在OPTIONS里的“/nologo /MLd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"Debug/GXDOS2.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /GZ /c ”前面吗?

也就是把pragma comment(linker,"/stack:0x915f0,0x2000")放在前面吗?
2004-12-11 22:07
0
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
10
#include <iostream.h>
pragma comment(linker,"/stack:0x????????,0x????????")
int main(int argc, char *argv[])
{
#include "drv.cpp"
cout<<"Hello C-Free!"<<endl;
return 0;
}
2004-12-11 22:14
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
最初由 shoooo 发布
#include <iostream.h>
pragma comment(linker,"/stack:0x????????,0x????????")
int main(int argc, char *argv[])
{
#include "drv.cpp"
........


按上修改后,代码如下:
#include <iostream.h>
pragma comment(linker,"/stack:0x915f0,0x2000")
int main(int argc, char *argv[])
{
#include "drv.cpp"
cout<<"Hello C-Free!"<<endl;
return 0;
}

重新编译结果如下:

Compiling...
main.cpp
c:\windows\desktop\11.rar_574\main.cpp(2) : error C2146: syntax error : missing ';' before identifier 'comment'
c:\windows\desktop\11.rar_574\main.cpp(2) : error C2501: 'pragma' : missing storage-class or type specifiers
c:\windows\desktop\11.rar_574\main.cpp(2) : fatal error C1004: unexpected end of file found
Error executing cl.exe.

main.exe - 3 error(s), 0 warning(s)
2004-12-11 22:21
0
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
12
最初由 ksgkgs 发布


按上修改后,代码如下:
#include <iostream.h>
pragma comment(linker,"/stack:0x915f0,0x2000")
........


sorry 少了个#
#pragma comment(linker,"/stack:0x915f0,0x2000")
2004-12-11 22:28
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
最初由 shoooo 发布


sorry 少了个#
#pragma comment(linker,"/stack:0x915f0,0x2000")


#include <iostream.h>
#pragma comment(linker,"/stack:0xfffff,0x2000")
int main(int argc, char *argv[])
{
#include "drv.cpp"
cout<<"Hello C-Free!"<<endl;
return 0;
}

编译结果
Compiling...
main.cpp
c:\windows\desktop\11.rar_574\drv.cpp(6551) : fatal error C1076: compiler limit : internal heap limit reached; use /Zm to specify a higher limit
Error executing cl.exe.

main.exe - 1 error(s), 0 warning(s)

我已经定义第一个为0XFFFFF了,应该够大的了。
2004-12-11 22:33
0
游客
登录 | 注册 方可回帖
返回
//