请问如何申请很大的数组空间但不会溢出呀?

jianshi051 2010-11-03 05:25:21
是这样的,我要建立一个临时文件,用于接收从网络传输过来的数据块,然后重组成一个完整的数据,比如我要接收一个128MB大小的文件,于是我这样写的:


#define BUFFER_SIZE_BYTE 134217728 //128MB
char szBuffer[BUFFER_SIZE_BYTE];
HANDLE m_handle = ::CreateFile(wsz_TaskName, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL,OPEN_ALWAYS, FILE_ATTRIBUTE_ARCHIVE, NULL);//先创建一个空文件
::WriteFile(m_handle,szBuffer,BUFFER_SIZE_BYTE,&temp,NULL);//然后往这个空文件里面写入数据。



运行结果就是stack overflow,就是我设置的那个数组太大了,但是网络上传输的数据更大,也是临时写进内存里的呀,为什么我的128M就溢出了呢?

问下有什么方法可以使我申请128M的空间,并且不溢出的吗?
...全文
209 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jianshi051 2010-11-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 mengfeihong 的回复:]
引用 6 楼 jianshi051 的回复:
引用 5 楼 tufaqing 的回复:
要了解一下程序等内存结构,建议了解一下汇编。代码段,数据段,堆栈段,等。
C,C++临时变量都是放在栈空间中,这个空间编译时固定了大小,程序运行时就开始分配好了,一般就几M,可以快速访问。


谢谢,一直以来只知道内存分为4个段,但是4个段怎么运行以及各自大小情况却从来不知道,你能给个链接吗?

……
[/Quote]

谢谢了,我知道啦:)
tornadowaves 2010-11-03
  • 打赏
  • 举报
回复
一直都是new malloc的把?
蒙飞鸿 2010-11-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jianshi051 的回复:]
引用 5 楼 tufaqing 的回复:
要了解一下程序等内存结构,建议了解一下汇编。代码段,数据段,堆栈段,等。
C,C++临时变量都是放在栈空间中,这个空间编译时固定了大小,程序运行时就开始分配好了,一般就几M,可以快速访问。


谢谢,一直以来只知道内存分为4个段,但是4个段怎么运行以及各自大小情况却从来不知道,你能给个链接吗?
[/Quote]
我觉得你这么问就有点扩大战线了。
如果要解决当前问题,只要时刻明确程序的空间是有限的,在创建大的空间的时候,尽量使用动态申请。此贴只是一点建议。
jianshi051 2010-11-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 tufaqing 的回复:]
要了解一下程序等内存结构,建议了解一下汇编。代码段,数据段,堆栈段,等。
C,C++临时变量都是放在栈空间中,这个空间编译时固定了大小,程序运行时就开始分配好了,一般就几M,可以快速访问。
[/Quote]

谢谢,一直以来只知道内存分为4个段,但是4个段怎么运行以及各自大小情况却从来不知道,你能给个链接吗?
tufaqing 2010-11-03
  • 打赏
  • 举报
回复
要了解一下程序等内存结构,建议了解一下汇编。代码段,数据段,堆栈段,等。
C,C++临时变量都是放在栈空间中,这个空间编译时固定了大小,程序运行时就开始分配好了,一般就几M,可以快速访问。
jianshi051 2010-11-03
  • 打赏
  • 举报
回复
额……同样是要申请128M的空间 为什么要动态而静态就不行呢?
蒙飞鸿 2010-11-03
  • 打赏
  • 举报
回复
char *szBuffer = new char[BUFFER_SIZE_BYTE];
......
delete [] szBuffer;
蒙飞鸿 2010-11-03
  • 打赏
  • 举报
回复
动态申请啊,new什么的。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧