社区
C++ 语言
帖子详情
二维数组占用内存情况
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;
}
...全文
1153
28
打赏
收藏
二维数组占用内存情况
#include #include using namespace std; int a[99999][99999]; int main() { Sleep(10000); return 0; }
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
28 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Terabit
2011-08-04
打赏
举报
回复
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表.
引用自
http://blog.csdn.net/zlp8383178/article/details/1657897
强迫症专用头像
2011-08-04
打赏
举报
回复
我是来学习的
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说的
“不在堆,也不在栈中,静态存储区,运行时分配.”
珍惜生命远离CPP
2011-08-02
打赏
举报
回复
留个名。。。
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)
C++数组-
二维数组
二维数组
就是在一维数组上,多加一个维度 1
二维数组
定义方式 1.数据类型 数组名[ 行数 ][ 列数 ]; 2.数据类型 数组名[ 行数 ][ 列数 ] = {{数据1,数据2} , {数据3, 数据4} }; 3.数据类型 数组名[ 行数 ][ 列数 ] = { 数据1, 数据2, 数据3, 数据4 }; 4.数据类型 数组名[ ][ 列数 ] = { 数据1, 数据2, 数据3, 数据4 } 建议:以上4种定义方式,利用第二种更加直观,提高代码的可读性 #include<io
C++指针:(包括
二维数组
、二级指针、动态
二维数组
内存
连续)
C++指针:(包括
二维数组
、二级指针、动态
二维数组
内存
连续) 在C++数组的创建及使用中,简单介绍了数组中指针的使用,但是还有一些其他问题,这里主要展开一些关于
二维数组
指针、二级指针以及实现动态
二维数组
的
内存
连续。 1、任何指针变量被创建时不会自动成为NULL指针,它的默认值是随机的,它会乱指一气。因此如果在短期不用的话,就先把指针赋值为NULL,例如:int * p = null; 2、以
内存
需求的角度来看,不同类型的指针没有什么不同,其所占空间与操作系统有关(32位操作系统指针
占用
4字节,64位系统指针
5.3.2、
二维数组
数组名
【代码】5.3.2、
二维数组
数组名。
二维数组
的定义和初始化
第一维(行)的下标值从0变化到2,第二维(列)的下标值从0变化到3,因此,第一个元素的下标matrix[0][0],最后一个元素为matrix[2][3]。第一维的长度代表数组每一列的元素个数,第二维的长度代表数组每一行的元素个数。按行初始化时,即使初始化列表中提供的初值个数可以少于数组元素的个数,第一维的长度声明也可以省略,此时系统自动给后面的元素初始化为0.当初始化列表给出数组全部元素的初始值时,第一维的长度声明可以省略,此时,系统将按初始化列表中提供的初值个数来定义数组的大小。
对《java程序员上班那点事》笔者对数组
占用
内存
质疑
1.《java程序员上班那点事》笔者对数组
占用
内存
的描述 2.实际测试
情况
: /** * 测试一维数组
占用
内存
*/ public static void testOneArray() { System.out.println("当前虚拟机的最大
内存
:" + Runtime.getRuntime().maxMemory()
C++ 语言
65,214
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章