回 帖 发 新 帖 刷新版面

主题:[讨论]请教:怎样理解Stack size的大小?

[size=3]各位大侠:
   看了精华贴里边的关于增大Stack size的解答,忽然觉得自己看不懂,只会按着方法操作。
这是原帖内容:
“选Project => Settings => Link => Category: Output => 
Stack allocations
Reserve: 这里填新值(默认为1M,若需要10M,则填10000000)”

(1)但是我在其它地方好像有人说在Reserve是这样填写的:0x100000,请问这样写与直接填写100000有什么区别吗?

(2)我在Reserve中填写0x900000000,CVF6.6提示我:"Format of hex number '0x900000000' is incorrrect.It may only contain character 0-9 and A-F.A '0x' is optional. the maximum allowed hex number is 0xFFFFFFFF",请问这是什么原因呢??

(3)我在Reserve中填写9000000000,CVF6.6提示我:"Format of decimal number '9000000000' is incorrrect.It may only contain character 0-9.The '+'prefix is optional. The maximum allowed decimal number is 4,294,967,295",请问这是什么原因呢??

谢谢了!!![/size]

回复列表 (共4个回复)

沙发

1. OX 是折算成16进制而已. OX10000 跟10000当然就有区别了.

2. cvf是32位的编译器, 能管理的内存有限. 0x900000000太大, 他也告诉你了, 最大只能够0xFFFFFFFF

3. 填入900000000, 是十进制数, 但还是超出最大值.

板凳

晕,0x900000000换算成十进制为38654705664,单位为字节,换算为M后为36864M,也就是36G,敢问你的编译器是64位的么,你的电脑有36G内存么?

3 楼


哦,谢谢了!

4 楼

[size=3][quote]晕,0x900000000换算成十进制为38654705664,单位为字节,换算为M后为36864M,也就是36G,敢问你的编译器是64位的么,你的电脑有36G内存么?[/quote]
呵呵,我对这方面还真是不懂啊!只是程序出现了stack overflow,所以就想把stack size改的足够大,没想到会出现这样的悲剧!
谢谢,受教了!![/size]

我来回复

您尚未登录,请登录后再回复。点此登录或注册