test dword ptr [eax],eax ; probe page.局部数组变量定义所分配的最大空间为1M
- 问题的出现
使用VS2017编写程序时,程序编译可以通过,但运行时就会弹出错误
经过查证发现:
这跟局部数组变量定义所分配的最大空间设置大小有关。
局部变量的申请空间是存放于栈中,windows里默认栈内存是1M,所以当申请空间大于1M时就会出现溢出错误。
在出错的代码中,也确实出现了这个问题
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define MaxSize 100005
int main()
{
int Data[MaxSize]; //以下三行语句,申请的数组内存空间太大
int Next[MaxSize];
int list[MaxSize];
int FristAdd, N, K;
}
- 解决方案:
项目->属性->链接器->系统->堆栈保留大小
注意:
这里填的是字节数,如果你想把他扩大为2M的话,
1024 * 1024 * 2 = 2097152
- 参考资料:
1 《怪异问题 调试到位置(test dword ptr [eax],eax ; probe page.)局部数组变量定义所分配的最大空间为1M》 https://blog.csdn.net/laoyi_grace/article/details/6749836