数组开辟内存空间

灵动代码樵夫 2013-04-03 09:33:44
C/C++语言中数组是定义了就会开辟内存空间吗?
比如:int a[10];这样就会开辟10*4字节的内存空间吗?
java中是定义只是引用,只有new了才开辟空间,C/C++中是怎么样处理的?
...全文
874 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Infinta8 2013-04-08
  • 打赏
  • 举报
回复
一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结 构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构 中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在 一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放 4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放 5、程序代码区—存放函数体的二进制代码。 函数里定义的,无论是简单变量,还是数字或结构,只要不是被 static 修饰的,都是临时在栈里分配空间的;所以,函数一结束,这些变量就没有意义了
一秒光年外 2013-04-08
  • 打赏
  • 举报
回复
引用 楼主 Smart_yujin 的回复:
比如:int a[10];这样就会开辟10*4字节的内存空间吗? java中是定义只是引用,只有new了才开辟空间,C/C++中是怎么样处理的?
int定义是系统自动开辟空间的,并不是像你说的java定义只是引用,java中也可以定义int a[10](也是定义时就自动开辟空间了),但是也可以利用指针开辟空间,这样返回指向所开辟空间的初始地址的指针。
jiandingzhe 2013-04-08
  • 打赏
  • 举报
回复
是在你调用这个函数的时候,这个空间会存在于函数栈上。 注意C/C++和Java最重大的区别,就是C/C++显式地区分堆和栈,栈上的对象会在函数退出时失效。
Red_angelX 2013-04-06
  • 打赏
  • 举报
回复
在栈上自动开辟
x363635334 2013-04-06
  • 打赏
  • 举报
回复
将在栈上开辟,但是不用手删
shen_wei 2013-04-03
  • 打赏
  • 举报
回复
定义就可以了。。。
lin5161678 2013-04-03
  • 打赏
  • 举报
回复
是的 开辟控件 不需要new 能直接用
liao05050075 2013-04-03
  • 打赏
  • 举报
回复
是的。会开辟数组。
kogou 2013-04-03
  • 打赏
  • 举报
回复
是的,不用new
fang 2013-04-03
  • 打赏
  • 举报
回复
引用 6 楼 bluesky12312388 的回复:
这个不会开辟空间。int a[10]如果 在函数中是使用的栈上面的空间,离开当前这个函数栈,这块空间是要被“回收”的
应该只是空间所在的位置不同,在栈上面也是占据空间,数组只是不要自己显示的释放,同理,堆上面是显示开廦的空间,肯定要显示的释放。
bluesky12312388 2013-04-03
  • 打赏
  • 举报
回复
这个不会开辟空间。int a[10]如果 在函数中是使用的栈上面的空间,离开当前这个函数栈,这块空间是要被“回收”的
赵4老师 2013-04-03
  • 打赏
  • 举报
回复
对学习编程者的忠告: 眼过千遍不如手过一遍! 书看千行不如手敲一行! 手敲千行不如单步一行! 单步源代码千行不如单步对应汇编一行! 单步类的实例“构造”或“复制”或“作为函数参数”或“作为函数返回值返回”或“参加各种运算”或“退出作用域”的语句对应的汇编代码几步后,就会来到该类的“构造函数”或“复制构造函数”或“运算符重载”或“析构函数”对应的C/C++源代码处。 VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。 对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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