数组存放在什么位置?

就简简单单定义一个数组chara[100];它是放在什么位置?栈里面?老师留一个题,要先这样定义数组来接受字符串,然后用malloc堆开辟一块空间来把a数组里面的东西放到... 就简简单单定义一个数组
char a[100];
它是放在什么位置?栈里面?

老师留一个题,要先这样定义数组来接受字符串,然后用malloc堆开辟一块空间来把a数组里面的东西放到新开辟的地方,也就是堆空间;
请问这样做有意义吗?
堆很大?
放在堆里 易于程序执行?

求解
展开
 我来答
百度网友83cdc1c
推荐于2017-11-25 · TA获得超过5792个赞
知道大有可为答主
回答量:1907
采纳率:100%
帮助的人:850万
展开全部
如果是定义在全局下的全局变量,这个数组就在数据段里。始终有效。

如果定义在函数下的局部变量,这个数组就在函数调用栈里。
用malloc申请堆空间拷贝数组内容,可能就是这个数组是在函数里定义的局部变量,函数调用结束后,栈里面为这个函数分配的空间就要失效,从而局部变量数组也会失效。但堆空间不会因为函数调用结束失效,函数调用结束后,函数里malloc出来内存空间仍然有效。
堆是系统管理的剩余内存,供系统运行过程中申请/释放内存空间,一般都比较大。
哆啦聊教育
高粉答主

2021-10-13 · 说的都是干货,快来关注
知道小有建树答主
回答量:4803
采纳率:100%
帮助的人:79.3万
展开全部

数组是用于储存多个相同类型数据的集合。

在C语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。

一维数组在内存中的存放方式是:

1、硬盘上不可能运行程序的,必须在内存中运行。

2、低地址到高地址存储 。

3、数组元素通常也称为下标变量。

4、在C语言中,只能逐个地使用下标变量, 不能用一个语句输出整个数组。

5、int a[10]和t=a[6]分别是定义数组长度为10和引用a数组中序号为6的元素,6不代表数组长度。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
来自月岩仪态万千的比目鱼
2013-04-17 · TA获得超过1571个赞
知道小有建树答主
回答量:1221
采纳率:50%
帮助的人:970万
展开全部
首先你要明白什么是堆,什么是栈。
栈是由编译器自己开辟的用来存放局部数据(局部变量,未显式初始化则为随机值),编译的时候不存在,运行的时候猜出现。
堆是由程序员开辟,堆是动态内存,也就是说知道程序员去释放它,否则它一直存在。
堆的大小:你开辟多大的空间,它就有多大。在c中是malloc,c++中是new。
最后一个问题,不是为了易于执行的,栈中的局部变量在使用完之后就释放掉了,即使这时候程序还没结束(例如局部函数中的变量,在出了“}”之后就释放了,释放之后就不能使用了)。而堆就不会释放,可以一直使用。
更多追问追答
追问
那老师让我们这么做没什么道理?难道只是让我们练习一下malloc?不会吧?
求解?

如果说没有free堆空间,那是不是进程结束了,那个开辟的位置还有数据呢?
追答
是让你们比较对比栈和堆的区别,这怎么没道理了?

程序结束,内存会被释放了。这是C++机制了好像。

如果存在句柄,并且还在被外部使用,那么程序结束了,这个句柄还是存在的。不会立即释放。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lishu598476780
2013-04-17
知道答主
回答量:36
采纳率:0%
帮助的人:13万
展开全部
1、栈区(stack):又编译器自动分配释放,存放函数的参数值,局部变量的值等,其操作方式类似于数据结构的栈。

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

3、全局区(static):也叫静态数据内存空间,存储全局变量和静态变量,全局变量和静态变量的存储是放一块的,初始化的全局变量和静态变量放一块区域,没有初始化的在相邻的另一块区域,程序结束后由系统释放。

4、文字常量区:常量字符串就是放在这里,程序结束后由系统释放。
5、程序代码区:存放函数体的二进制代码。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式