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

原文地址:https://www.cnblogs.com/Manual-Linux/p/11417401.html