A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 正在输入中... 中级黑马   /  2015-11-6 23:49  /  1543 人查看  /  19 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

刚开始学习c语言的话,对内存的理解不够深刻,这里我简简单单的谈一下:
1、首先我们肯定知道电脑的存储设备分为两种,内存和硬盘,但是一般的人都只知道内存大电脑会快,硬盘大能存很多东西,这些东西显然都是浅显的,对于一般人就够了,但是对于我们的软件开发者这一点是远远不够的。
内存特点:存数数据掉电丢失、不能永久的存储数据。
硬盘特点:永久的存储数据,掉电不丢失数据。
我们的程序,包括操作系统都是放在硬盘中存储的,当我们开机或者运行一个程序的时候,操作系统会将应用程序由硬盘,加载到内存中,从而执行,也就是说程序的运行是在内存中,程序的存储是在硬盘中的(操作系统是由一段特有的程序加载到内存),所以内存越大我们就可以在内存中运行更多的程序。也就是说我们的快。

2、上面我们提到了速度快,是因为不同的存储设备访问速度是不一样的,内存的访问速度是远远要快于硬盘的,所以如果内存很大,我们就不用频繁的访问硬盘,速度就快起来。
下面简单的介绍一下存储设备的访问速速:
寄存器 > cache缓存 > 内存> 硬盘> 网络
这里面我们知道、买电脑的时候,还会问下缓存多大,也是速度这个原因。
这里提到的网络,网络也是一种存储数据的方式。

3、程序中的内存管理,程序加载到内存中,内存也是分不同的位置,有代码段、数据段、只读数据段 堆栈段等。这里我不一一赘述。主要给大家介绍一下我们写程序中的数据都是放在那里的。

内存分为:静态存储区、堆和栈
1、静态存储区存放一些全局变量和static修饰的局部变量,存放在这个区域的变量有一个特点就是程序运行的时候都有效。
2、堆区,平常我们在c语言中用malloc、realloc等申请的内存或者在OC中alloc申请的内存,都是存储在堆区的,这个内存区域是需要我们程序员手动进行管理的,如果不管理,就很容易造成内存泄露,malloc申请一定要free释放,new申请一定要delete释放。
3、栈区、这个区域存放的就是局部变量,不用我们手动去管理,他会动态的申请和释放。有点需要说明的是,在函数返回一定不要返回局部变量,因为函数在调用结束,函数的栈就被释放了。


好了时间也不早了,就写到这里,以后大家有什么不明白的欢迎提出来,我们一起沟通交流

19 个回复

倒序浏览
顶起!不要沉呀、、、没人看?
回复 使用道具 举报
好好 加油  共同努力
回复 使用道具 举报
努力!!
回复 使用道具 举报

必须的,为了我们的梦想而努力。。。
回复 使用道具 举报
不错,顶起~
回复 使用道具 举报
不错,加油
回复 使用道具 举报

嘿嘿,重要有人看了,有什么问题我们还可以一起进行交流哈、、OC也可以
回复 使用道具 举报
默默点赞!!!!!!!!!!!!!
回复 使用道具 举报
yufang1993 发表于 2015-11-13 00:28
默默点赞!!!!!!!!!!!!!

一个黑马币默默拿走。。。。。有啥意见还请指正
回复 使用道具 举报
帮忙顶!!!!!!!!
回复 使用道具 举报
加油,好好努力
回复 使用道具 举报
默默点赞!!!!!!!!!!!!!!!!!!!!!!!
回复 使用道具 举报
学习一下
回复 使用道具 举报
顶起!!!!吼吼!!
回复 使用道具 举报
支持一下
回复 使用道具 举报
总结不错,我们老师也在给我们讲这个问题
回复 使用道具 举报
木冉 中级黑马 2015-11-19 11:57:08
18#
顶顶顶~
回复 使用道具 举报
linexs 中级黑马 2015-11-19 12:35:58
19#
雁过留声,人过留名,mark
回复 使用道具 举报
linexs 发表于 2015-11-19 12:35
雁过留声,人过留名,mark

这个是个好习惯。。。绝对666666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马