首页 > 编程语言 > 详细

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

时间:2019-08-27 14:42:52      阅读:53      评论:0      收藏:0      [点我收藏+]
  • 问题的出现

使用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

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!