您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> C/C++ >> VS2008 栈溢出问题,大神进!

VS2008 栈溢出问题,大神进!

来源:网络整理     时间:2016/8/31 22:26:40     关键词:

关于网友提出的“ VS2008 栈溢出问题,大神进!”问题疑问,本网通过在网上对“ VS2008 栈溢出问题,大神进!”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: VS2008 栈溢出问题,大神进!
描述:

,溢出 ,VS208vs2008溢出

OS:Win 7
从VS2008的help中看,默认栈的大小只有1MB,但是实际测试发现,栈的大小不止1MB
(在函数中创建int temp[1000][10000] 不会溢出)
据我观察Win7中给VS2008 win32 console app 中实际可用栈大小约为1GB,大家应该都听过很多黑客都是利用栈溢出来做文章,我想会不会是win7为填补次漏洞,在默认栈溢出后,会创建新栈拼接,加大原栈?
不知道在XP系统上测试是怎样呢?
解决方案1:

引用 9 楼 longforljy 的回复:
Quote: 引用 7 楼 majia2011 的回复:

应该是用了static吧
 没用static
引用 1 楼 mougaidong 的回复:
上代码吧,说不定变量都被优化掉了
编译方面的东西我确实不懂,之前那个程序不知道还找得着不。我下午试试吧
引用 8 楼 e3internet 的回复:
1GB你说的那就不程序栈的大小了,应该是系统允许程序可以使用的内存(页面+非页面)而且也不是1GB

这个我是看debug时变量的地址的,大约从0x4000 0000,然后一直递减,到靠近0x0000 0000,就提示栈溢出(用无返回递归函数测试,递归函数里边只是简单定义一个变量)
引用 6 楼 nbabn 的回复:
VC编译的程序栈空间默认1M,
char cBuff[1024 * 1024 * 2047 + 1024 * 1023 + 816] = {0};
这是我用VC2010能编译通过的最大长度,再+1就编译出错了。
但这段代码运行肯定出错。
char cBuff[1024 * 1024] = {0};
这样编译没问题,运行也肯定要出错,栈空间全占完了,程序没法干活了。
我下午试试,之前印象中好像只是声明了int temp[1000][10000],并没初始化,难道和这个有关?

没有使用 ,被优化了。 解决方案2:

上代码吧,说不定变量都被优化掉了


以上介绍了“ VS2008 栈溢出问题,大神进!”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3689280.html

相关图片

相关文章