递归时 运行时错误:Stack overflow
2009-11-28 15:29
134 查看
很有可能是递归太深了,Stack overflow。
msdn里关于link的/stack帮助里明确写到"The default stack size is 1 MB
"。
项目- 属性- 配置属性- 链接器- 系统1.堆保留大小2.堆提交大小3.堆栈保留大小4.堆栈提交大小 可以设置得大一点。
/STACK参数 格式:/STACK:reserve[,commit]
第一个reserve参数的数值是指保留的栈大小,第二个commit参数值指定提交的大小。
比如,用/stack,0x100000 指定保留1MB的栈大小,这是在内存空间里保留出的堆栈大小,并不影响物理内存大小,因为还没提交。
/stack,0x100000,0x100000 则既保留的同时也提交这块内存,现在的物理内存已经被映射到这个内存空间,可以看见进程里test.exe的内存大小已经从700多K长到1.7MB了
提交和保留的
保留只是在内存空间地址上分配出指定的大小,准备使用,但还不能使用。可以通过 Process Explorer 查看test.exe进程的虚拟内存增大。
提交是把保留出来的内存空间地址和物理内存做映射,提交以后才能正真使用这块地址。这是后物理内存占用也增大了。
msdn里关于link的/stack帮助里明确写到"The default stack size is 1 MB
"。
项目- 属性- 配置属性- 链接器- 系统1.堆保留大小2.堆提交大小3.堆栈保留大小4.堆栈提交大小 可以设置得大一点。
/STACK参数 格式:/STACK:reserve[,commit]
第一个reserve参数的数值是指保留的栈大小,第二个commit参数值指定提交的大小。
比如,用/stack,0x100000 指定保留1MB的栈大小,这是在内存空间里保留出的堆栈大小,并不影响物理内存大小,因为还没提交。
/stack,0x100000,0x100000 则既保留的同时也提交这块内存,现在的物理内存已经被映射到这个内存空间,可以看见进程里test.exe的内存大小已经从700多K长到1.7MB了
提交和保留的
保留只是在内存空间地址上分配出指定的大小,准备使用,但还不能使用。可以通过 Process Explorer 查看test.exe进程的虚拟内存增大。
提交是把保留出来的内存空间地址和物理内存做映射,提交以后才能正真使用这块地址。这是后物理内存占用也增大了。
相关文章推荐
- Delphi或者BCB在运行中出现“Stack Overflow- save your work and restart CodeGear”错误提示的解决方案
- C/C++ For循环语句的效率测试优化及运行时错误:Stack Overflow的解决办法
- (递归)运行有警告,结果错误,怎么回事?
- VS2010运行错误:0x010e86c7 处有未经处理的异常: 0xC00000FD: Stack overflow
- 运行时出现Stack overflow错误
- 语法错误javac(编译),逻辑错误java(运行)
- Mongo运行错误:Failed to connect 127.0.0.1:27017,reason:errno:10061由于目标计算机积极拒绝,无法连接
- Imagick 运行到 $im->readImage($pdf); 就弹出错误对话框
- 给Listview配上Adapters后运行,出现致命错误:NULLPOINTERERROR
- ubuntu:运行 apt-get update 错误
- hadoop配置、运行错误总结[二]
- 错误二:程序无法在glassfish上正常运行
- 解决VC2005程序的一个运行错误“由于应用程序的配置不正确,应用程序未能启动"
- VC6.0把一个编辑框改成组合框后运行出现位置错误
- C编程 编译运行过程中系统提示错误及解决方法总结
- Tomcat服务器无法运行,出现Bad Request (Invalid Hostname)错误
- Java 终端运行错误:找不到或无法加载主类
- 编译错误和运行错误
- 编译错误和运行错误
- 编译错误和运行错误