最近总被这个错误困扰,查了一下msdn,他举了一个递归调用的例子,但是我的情况应该与此不同。
不知道各位能否指点一下这个stack overflow还会有什么原因。多多拜上。
不知道各位能否指点一下这个stack overflow还会有什么原因。多多拜上。
解决方案 »
- 模拟多台设备定时向服务器发送数据,现设计为每个设备启动一个线程,可是最多两个线程的数据能够发送成功?
- 如何建一个具有显示文件的对话框
- 请问谁有VC开发具体项目的视频?
- vc6.0在debug下显示字符串长度问题
- 对于静态拆分,这几个错误原因何在?
- 发送JSON格式数据
- 各位高手,有没有什么关于VC++的好书可以推荐啊,急用!!!
- 求救:用Winsock,connect的时候出错,id为10061,请问怎么解决,十分感谢!
- 如何用vc实现一个话同心圆环的程序?
- how can i get circumcenter(外心) coordinate when u know three points that are not in the same line
- 请问哪里能找到Matt Pietrek 的under the hood 的所有文章啊,msdn上不全的
- 一个文件写操作的问题
是这样的我的系统每隔50多个小时就会退出,从dr.华生里看到的是这个stack overflow.
我尝试着跑debug版,但是出错时定位到的堆栈里都是mfc42d.dll中的,没有我们的代码,
同时我也把各个动态库中的stack allocation变大,故障依然,妈的,这堆烂代码。不知道,
您现在对我有没有什么建议,不胜感激。
我建议楼主装一个BoundsChecker,对代码重新编译,在Debug版中对程序的各个分支进行执行,BoundsChecker将对代码中有可能出问题的代码一一提示,当然不可能做到100%的准确,不过相信还是有一定的帮助.
project->setting->link:
在category里选择output,在stack的Reserve里输入0x10000000试试每当创建一个线程时,系统就会为线程的堆栈(每个线程有它自己的堆栈)保留一个堆栈空间区域,并将一些物理存储器提交给这个已保留的区域。按照默认设置,系统保留1MB的地址空间并提交两个页面的内存。但是,这些默认值是可以修改的,方法是在你链接应用程序时设定Microsoft的链接程序的/STACK选项:/STACK:reserve[,commit]
当创建一个线程的堆栈时,系统将会保留一个链接程序的/STACK开关指明的地址空间区域。但是,当调用CreateThread或_beginthreadex函数时,可以重载原先提交的内存数量。这两个函数都有一个参数,可以用来重载原先提交给堆栈的地址空间的内存数量。如果设定这个参数为0,那么系统将使用/STACK开关指明的已提交的堆栈大小值。后面将假定我们使用默认的堆栈大小值,即1MB的保留区域,每次提交一个页面的内存。
如果在某个函数中大量调用OLE2T宏,就有可能导致堆栈溢出。这些宏在堆栈上分配空间(而不是在堆上),具体可以参看:TN059: Using MFC MBCS/Unicode Conversion Macros
The implementation of each macro uses the _alloca() function to allocate memory from the stack instead of the heap. Allocating memory from the stack is much faster than allocating memory on the heap, and the memory is automatically freed when the function is exited.
呵呵,希望对楼主有用。