关于C语言中内存的3个问题
来源:互联网 发布:php对接api 编辑:程序博客网 时间:2024/05/16 17:48
1.程序为什么需要内存?
计算机程序 = 代码 + 结果,从宏观上理解,代码就是动作,而数据被动作加工,最终返回结果。程序是被放在内存中运行的,并且需要内存来存储一些临时变量,因此,对于程序来说,内存是程序的立足、生命之地。
2.从硬件、逻辑角度看内存?
从硬件角度上,内存是一个硬件器件,由硬件系统提供,根据不同的硬件实现原理,可以把内存分为SRAM,DRAM(DRAM有好多代,譬如最早的SDRAM,到后来的DDR2,DDR2...);从逻辑的角度上,内存是一种可以随机访问并且读写的东西,该东西实际上是由无限多个内存单元组成,每个单元有一个固定的地址叫做内存地址。
3.内存从哪获取而来?
程序通过3中方式获取内存:栈(stack)、堆(heap)、数据区(.data)。
C语言中使用栈来保存局部变量,栈的入口即出口,按照先进后出FILO(first in last out)的规律管理内存。当我们在C中定义一个局部变量时,譬如int a,编译器会在栈中分配一段4字节空间给该变量使用,其背后的实质是:将这4字节的栈内存的内存地址和我们定义的局部变量名a给关联起来。
堆是获取内存的另一种方式,当需要内存容量比较大时,可以使用malloc和free反复申请使用、释放;
C语言中初始化为非零的全局变量和静态局部变量(即使用static修饰的局部变量)获取内存则是通过数据区(.data)。对于未初始化或显式初始化为0的全局变量则放在bss段。bss段和.data段没有本质区别,几乎可以不用明确去区分这两种。
0 0
- 关于C语言中内存的3个问题
- 关于C语言中内存的3个问题
- 关于C语言中内存的3个问题
- 关于C语言中内存的3个问题
- 关于C语言中内存的3个问题
- 关于C语言中数据结构的内存对齐问题
- 关于C语言 内存对齐的问题
- C语言中关于内存的分配
- C语言中关于IF的问题..
- c语言中关于n个元素的栈和c1赋不上值的问题
- iOS开发C语言关于内存问题的总结
- 关于C语言12个问题的回复
- 关于C语言中内存分配的技巧
- C语言中关于.h和.c的问题
- C语言中关于内存那些事
- C语言中关于内存这个话题
- 关于C语言中内存分配
- C语言中内存动态分配应注意的问题
- 构造函数和析构函数的作用是什么?什么时候需要自己定义构造函数和析构函数?
- VirtualBox安裝 Android-x86
- 简单socket()编程
- 连续更新了42天早报之后
- ESP8266 station模式下建立client、server TCP连接
- 关于C语言中内存的3个问题
- ESP8266 NON-OS SDK 和 RTOS SDK实现GPIO中断不同点
- 一个结构体传递方式的问题
- <C++全方位学习>endl与\n的区别
- 经典笔试题:用C写一个函数测试当前机器大小端模式
- HT7A6312—— 离线开关电源小功率初级转换开关IC 记录总结
- 【读书笔记】机器学习实战-2.2节
- 《一条狗的使命》观后感
- PHP 常量、PHP 变量全解析(超全局变量、变量的8种数据类型等)