test dword ptr [eax],eax ; probe page.局部数组变量定义所分配的最大空间为1M

时间:2021-08-12 03:42:40
  • 问题的出现

使用VS2017编写程序时,程序编译可以通过,但运行时就会弹出错误

test dword ptr [eax],eax ; probe page.局部数组变量定义所分配的最大空间为1M

经过查证发现:

这跟局部数组变量定义所分配的最大空间设置大小有关。

局部变量的申请空间是存放于栈中,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