【问题的说明】
编译时没有错误,但调试或运行时程序报告了错误! 一脸无知的表情~~~
调试提示:
xxx.exe中的0x00e731d7未处理的异常:0 xc 00000 FD :堆栈溢出原本是堆栈溢出!
【问题为什么会发生】
局部变量的请求区域存储在堆栈中,在windows上,缺省堆栈内存为1米,因此如果请求区域大于1米,则会发生溢出错误。
【解决方案】
1、扩大堆栈空间大小,在vs项目中,项目-属性-链接器系统-堆栈预留大小(注:此处填写的是字节数) )。
如果你想把他扩大到2M,1024*1024*2=2097152
2、本地变量请勿申请1M以上的空格。
将该存储器申请方式
BYTE pBuffer[4096]; 更改:
byte*lpbuffer=(byte* ) virtualalloc(0,dwFileSize,MEM_COMMIT,PAGE_READWRITE ); 最后请不要忘记释放内存:
virtualfree(lpbuffer,0,MEM_RELEASE );