编写Wince的APP时出现 'User Stack Overflow' 异常的解决办法

来源:互联网 发布:chm电子书制作软件 编辑:程序博客网 时间:2024/06/16 06:44

/************************************************************************************************

编译环境:vs2005

SDK:ApicalAtlasVSDK(A5)

目标设备操作系统:Wince 6.0

时间:2013-05-03

*************************************************************************************************/

    在Wince下编写APP时如果定义成员或局部变量过多有可能会出现栈溢出的异常,以下是我碰到的异常信息:

Exception 'User Stack Overflow' (-3): Thread-Id=08570156(pth=8601681c), Proc-Id=0843004a(pprc=85d77000) 'ISDBTPlayer.exe', VM-active=0843004a(pprc=85d77000) 'ISDBTPlayer.exe'
PC=4007a424(coredll.dll+0x0006a424) RA=4005d530(coredll.dll+0x0004d530) SP=00041d10, BVA=00041d4c
Exception 'Raised Exception' (-1): Thread-Id=08570156(pth=8601681c), Proc-Id=0843004a(pprc=85d77000) 'ISDBTPlayer.exe', VM-active=0843004a(pprc=85d77000) 'ISDBTPlayer.exe'
PC=4002c77c(coredll.dll+0x0001c77c) RA=90f3d8dc(kernel.dll+0x000078dc) SP=00041520, BVA=ffffffff


是由于我在程序中创建了大量的对象引起的,有以下两种解决办法

1、可以把部分对象定义成指针,在初始化时new相应的对象,在退出时delete,因为用new产生的对象就会存放在堆中,减少了栈的使用异常就没有了。

2、是改变编译器的默认栈大小,改变位置如下图所示: