Linux C 内存管理
2015-10-18 21:24
477 查看
32位操作系统内存最大空间为 2^32 = 2^10*2^10*2^10*4 = 4GB;
64位操作系统的内存分布
![](http://img.blog.csdn.net/20151018212357657)
内存栈里存放程序运行的状态;
64位操作系统
int 占4字节
指针 占8个字节
在声明变量时,gcc 编译器,会把类型相同的变量放在连续的地址空间;
函数也在栈中占有地址;
![](http://img.blog.csdn.net/20151018220440465)
自由可分配内存:
![](http://img.blog.csdn.net/20151018212344734)
静态变量
全局变量
常量
都存储在数据段;
![](http://img.blog.csdn.net/20151018220021017?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
代码段,代码段保存源代码的地址,
地址的运算:
指针偏移运算是运算速度最快的
指针变量,可以去替换指针常量,
数组是一种指针常量,可以用一个指针变量去表示;
堆和栈的内存地址是可以修改的,
但是代码段的地址是不可以修改的。
64位操作系统的内存分布
内存栈里存放程序运行的状态;
64位操作系统
int 占4字节
指针 占8个字节
在声明变量时,gcc 编译器,会把类型相同的变量放在连续的地址空间;
函数也在栈中占有地址;
自由可分配内存:
静态变量
全局变量
常量
都存储在数据段;
代码段,代码段保存源代码的地址,
地址的运算:
指针偏移运算是运算速度最快的
指针变量,可以去替换指针常量,
数组是一种指针常量,可以用一个指针变量去表示;
堆和栈的内存地址是可以修改的,
但是代码段的地址是不可以修改的。
相关文章推荐
- hadoop、zookeeper、hbase在Linux中的安装
- Linux流量监控工具
- Linux strace命令
- 第 三 十 四 天:二 阶 段 复 习(五)
- Linux vmstat命令实战详解
- CentOS升级git
- linux svn服务器搭建笔记
- mysql问题-centos7中mysql远程连接问题
- linux 下汉化 0.A.D游戏
- Linux初学——文件的压缩与打包
- CentOS5.5上安装git
- 查看Linux系统的版本以及位数
- linux命令ps aux|grep xxx详解
- Linux 线程 动画
- linux 多线程基础
- CentOS配置VSFTP服务器
- linux文件权限
- Centos 7 学习加入用户
- Linux汇编语言及嵌入式汇编
- linux目录解释