黑马程序员技术交流社区

标题: 浅谈c语言内存 [打印本页]

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

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

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

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


好了时间也不早了,就写到这里,以后大家有什么不明白的欢迎提出来,我们一起沟通交流
作者: 正在输入中...    时间: 2015-11-7 16:03
顶起!不要沉呀、、、没人看?
作者: 于鸿鹏    时间: 2015-11-7 16:12
好好 加油  共同努力
作者: sultan1202    时间: 2015-11-8 00:22
努力!!
作者: 正在输入中...    时间: 2015-11-8 14:27
sultan1202 发表于 2015-11-8 00:22
努力!!

必须的,为了我们的梦想而努力。。。
作者: daitoudainaoali    时间: 2015-11-8 23:09
不错,顶起~
作者: daitoudainaoali    时间: 2015-11-8 23:11
不错,加油
作者: 正在输入中...    时间: 2015-11-12 23:31
daitoudainaoali 发表于 2015-11-8 23:11
不错,加油

嘿嘿,重要有人看了,有什么问题我们还可以一起进行交流哈、、OC也可以
作者: yufang1993    时间: 2015-11-13 00:28
默默点赞!!!!!!!!!!!!!
作者: 正在输入中...    时间: 2015-11-18 23:25
yufang1993 发表于 2015-11-13 00:28
默默点赞!!!!!!!!!!!!!

一个黑马币默默拿走。。。。。有啥意见还请指正
作者: yanggangcl    时间: 2015-11-19 07:36
帮忙顶!!!!!!!!
作者: liruixue    时间: 2015-11-19 08:32
加油,好好努力
作者: yufang1993    时间: 2015-11-19 08:43
默默点赞!!!!!!!!!!!!!!!!!!!!!!!
作者: 庐山烟雨浙江潮    时间: 2015-11-19 09:36
学习一下
作者: lixiang73033    时间: 2015-11-19 09:48
顶起!!!!吼吼!!
作者: liuchuan_alex    时间: 2015-11-19 11:24
支持一下
作者: wuxiaoling    时间: 2015-11-19 11:55
总结不错,我们老师也在给我们讲这个问题
作者: 木冉    时间: 2015-11-19 11:57
顶顶顶~
作者: linexs    时间: 2015-11-19 12:35
雁过留声,人过留名,mark
作者: 正在输入中...    时间: 2015-11-20 23:05
linexs 发表于 2015-11-19 12:35
雁过留声,人过留名,mark

这个是个好习惯。。。绝对666666




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2