现在的位置: 首页 > 综合 > 正文

stack overflow问题

2013年06月27日 ⁄ 综合 ⁄ 共 480字 ⁄ 字号 评论关闭

         最近碰到一个问题,在调试H.264解码包的时候碰到stack overflow的问题,很奇怪,因为library以前测试基本ok的,最近要将他从DirectShow下整理出来,其间做了一下封装,出现问题表示如下:

 

调用函数pDecoder->OnPicture();出现以下对话框:

 

    第一反应就是会不会是指针指向出错,结果Debug调试,察看指针指向,发现正确,和类指针一样,这方面问题排除。

后来进一步调试发现在调用OnPicture()函数的时候,系统首先检查分配临时变量空间给函数,而我的函数里面有一个临时变量的空间数组,大小1920*1088*2,这样导致stack开辟空间出错,问题到这边算是发现了,呵呵

 

解决方法:

    1:时候发现VC6.0默认情况下线程开辟大小为1M,我们可以通过修改Project/Settings/Link,选择Output,其中的Stack allocations的reserve的值来更改栈空间的大小。

    2:对于大空间申请,尽量避免在stack开辟,应使用动态申请的方法,开辟在heap上。

 

抱歉!评论已关闭.