vs2015栈溢出的解决办法以及读取一个超大数组的方法

错误现象一:vs2015栈溢出

产生错误的代码:

int main()
{
	int f[5000000];
	return 0;
}

错误现象:
在这里插入图片描述

错误产生的原因

vs默认的栈的大小只有1M,当定义的数组大于1M时就会直接报对战溢出的错误。

解决办法

此时应该设置vs里栈的大小,设置大一点比如50M,参考这篇文章进行: 修改visual studio的默认堆栈大小

错误现象二:读取一个超大数组出错

产生错误的原因,头文件包含的数据很大,接近1个G
在这里插入图片描述
其中这些头文件包含的数据很大,接近1个G:在这里插入图片描述
这个数组就有几百M
在这里插入图片描述
设置VS栈的大小为1000M,也即1000 x 1024 x1024 = 1048576000
在这里插入图片描述
目前改大了也不行。。。出现了堆溢出的错误。
在这里插入图片描述
在找解决办法。。。


错误二产生的原因

直接以头文件的方式include装有数组的.h文件。
网上没有解决办法,和同学讨论知道的。

不要把数组直接存为.h文件,电脑要么要编译很久,要么直接卡死,解决办法就是把数据直接存为二进制文件或者txt文件再读入。

千万不要这样!!!!!!!
在这里插入图片描述

错误二的解决办法

不成功方法一

本来打算用python将数据保存为csv格式的,但是保存一个33554432个float32的数组竟然保存了四个小时还没完,我也是醉了。。。另外用c++读取csv到数组里也并不简单。为了读取方便,我用python保存csv的时候,只将数据保存为1行,奈何我连数据存储都没有完成。

不过python保存csv的代码还是记录一下:

import csv
csv_writer = csv.writer(f)
csv_writer.writerow(checkpoint['state_dict']['conv1.weight'].flatten().numpy().tolist())

成功方法二

python将数据存为二进制,并用c++读取
python保存二进制文件,以及c语言读取二进制文件到数组,几百兆的数据瞬间完成(目测不到1秒),第一次体会到二进制的美妙!!!

并且将数据存为二进制后,文件大小少了好多:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙叙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值