|
发表于 2009-4-27 15:01:45
|
显示全部楼层
原帖由 yaner724 于 2009-4-27 02:55 发表
我的udf里有一个矩阵,比较小的情况下,能顺利计算,但是当这个矩阵改大 点的时候比如[100][100]就出现stack overflow 怎么解决阿?
恳求指点交流
qq:41307444
局部变量占用空间太大,或者函数调用层次太深就会出现“Stack Overflow”的情况. 解决这类问题的办法有两个,一是增大栈空间(后文中有详细描述),二是改用动态分配,使用堆(heap)而不是栈(stack)。
1. 增大栈空间
调出“Project/Settings/Link”选项卡,选择Output,其中的Stack allocations的reserve值便是栈空间所用大小VC6中默认为1MB,根据实际情况将其加大然后重新编译即可,具体说明可参见MSDN中的/stack选项。这个方案对于使用VC编译UDF来说简单可行,但对用纯C编译UDf的朋友不可行。
这里再多提一点,增大栈空间还有一个更简单的方法,那就是使用VC附带的EDITBIN工具,它可以直接增大可执行程序的栈空间,而不用重新编译程序,其使用方法如下:
EDITBIN /STACK:reserve[,commit] [files]
2.使用堆(heap)
采用malloc和free函数来动态分配数组。
3.可以考虑全局变量
[ 本帖最后由 gearboy78 于 2009-4-27 07:03 编辑 ] |
|