读书人

动态链接库的最大内存空间是多大?解决

发布时间: 2012-08-03 00:12:14 作者: rapoo

动态链接库的最大内存空间是多大?
我用VC++6.0写了个基于MFC常规的动态链接库,当声明三维数组过大时(X[2][360][1000]),调用时会出错,同样的程序段在可执行文件中没有问题。将数组改小到X[1][60][1000]时不报错,我想这可能是动态链接库存在最大内存限制,想请问一下动态链接库可容许的最大内存空间有多大?

[解决办法]
数组元素是char吗?我觉得你才这么点大,应该没关系的
[解决办法]
DLL可以有自己的数据段,但没有自己的堆栈,DLL模块需要的堆栈内存都是从运行进程的堆栈中分配出来的,使用与调用它的应用程序相同的堆栈模式;一个DLL在内存中只有一个实例;
[解决办法]
大数组用new在堆在分配,不要在栈上,

如果一定要在栈上,要更改程序栈大小设置,默认为1M
vc6.0 工程->设置->连接->输出->保留 0x100000表示1M,自己调整大小
如果在栈上分配,可用sizeof(X)得出你需要内存的多少
[解决办法]
dll自身又不能运行,它运行时的空间是从进程中划分的
[解决办法]
建议使用malloc(2*360*1000)的方式分配在堆上,然后用指针偏移(如*(p+i*k+j))这种方式来经行寻址

读书人网 >VC/MFC

热点推荐