二维数组占用内存情况

ljq550000 2011-07-22 08:14:17
#include <iostream>
#include <windows.h>

using namespace std;

int a[99999][99999];

int main()
{
Sleep(10000);
return 0;
}
...全文
1068 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
heqinlong 2011-08-04
  • 打赏
  • 举报
回复
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。

2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表.

引用自

http://blog.csdn.net/zlp8383178/article/details/1657897

  • 打赏
  • 举报
回复
我是来学习的
mainsea 2011-08-03
  • 打赏
  • 举报
回复
!@#¥%……&*
jernymy 2011-08-02
  • 打赏
  • 举报
回复
不在堆,也不在栈中,静态存储区,运行时分配.
visualwind 2011-08-02
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 threeleafzerg007 的回复:]

对csdn,有所失望 所谓有星的 或者不带星的
都不知道这个变量具体在程序的那个section里。


无初始值全局变量在binary的.bss段,只有占位符。只有系统启动这个程序时,才实际分配空间。。。。
[/Quote]

VC编译器会报错的
辰岡墨竹 2011-08-02
  • 打赏
  • 举报
回复
对于没有初始化的全局变量,不是在栈里,在BSS段里有一个说明,在EXE里只有几个字节。OS加载时会,按BSS的说明分配内存的。所以编译不出错,不过系统分配时失败。
乐哉悠哉 2011-08-02
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 threeleafzerg007 的回复:]
对csdn,有所失望 所谓有星的 或者不带星的
都不知道这个变量具体在程序的那个section里。


无初始值全局变量在binary的.bss段,只有占位符。只有系统启动这个程序时,才实际分配空间。。。。
[/Quote]
占哪里的位啊?真心求解~
匚匚 2011-08-02
  • 打赏
  • 举报
回复
这是全局变量啊
应放在BSS段吧
机智的呆呆 2011-08-02
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 healer_kx 的回复:]
火前第一帖!
[/Quote]
火前第二帖!
healer_kx 2011-08-02
  • 打赏
  • 举报
回复
火前第一帖!
threeleafzerg007 2011-08-02
  • 打赏
  • 举报
回复
对csdn,有所失望 所谓有星的 或者不带星的
都不知道这个变量具体在程序的那个section里。


无初始值全局变量在binary的.bss段,只有占位符。只有系统启动这个程序时,才实际分配空间。。。。
pamtry 2011-08-02
  • 打赏
  • 举报
回复
被另外一个帖子引过来

话说如果没记错的话只声明不初始化的全局变量,是分配到bss段的

也就是23L说的

“不在堆,也不在栈中,静态存储区,运行时分配.”
  • 打赏
  • 举报
回复
留个名。。。
qianwen36 2011-07-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ljq550000 的回复:]

引用 2 楼 jackyjkchen 的回复:
栈不要超过1M


这个不是在堆上分配的么
[/Quote]

全局变量,或是静态变量都不存在内存分配问题,也就是说不需要程序员考虑这事情。是根据编译器规则来的,被指定在程序数据段中的静态区域。所以他的生命期是随同应用程序的整个生存期的。
chen16501560 2011-07-28
  • 打赏
  • 举报
回复
堆区 一般是new/free malloc/delete 申请的
赵4老师 2011-07-25
  • 打赏
  • 举报
回复
如果有一天,你真要用这么大的数组的话,别忘了_lseeki64
wjjjuniniho 2011-07-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ljq550000 的回复:]

引用 2 楼 jackyjkchen 的回复:
栈不要超过1M


这个不是在堆上分配的么
[/Quote]

这个是在全局区(或者叫静态区)分配的
sjy88813 2011-07-25
  • 打赏
  • 举报
回复
mark
luciferisnotsatan 2011-07-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 babilife 的回复:]

受限的因素比较多,但是,不受物理内存限制。(你编译出的程序,即使你的机器物理内存有限,但你可以找到一个物理内存更大的机器,从而成功运行。另外,考虑虚拟内存。)

1、来自编译器的限制:大小不能超过size_t所能表示的最大值。
2、来自操作系统的限制:32位windows系统中,一个程序所能使用的内存最多不超过2G(也有说是3G的,我也不是很清楚)。其它操作系统类似。

另外,堆栈上的……
[/Quote]
windows可以设成3G用户态模式
lionghua 2011-07-25
  • 打赏
  • 举报
回复
好像之前有个问题和你提的类似。因为没有用到那么多,只是声明而已。不知道回答对不对
加载更多回复(8)

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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