博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一、内存
阅读量:5326 次
发布时间:2019-06-14

本文共 1306 字,大约阅读时间需要 4 分钟。

1.内存分区:
高(内存地址大)  栈底      栈区         
                                            堆区                                          
                                            静态区
                                            常量区
低(内存地址小)               代码区
2.栈:数据结构
(1)特点:先进后出
(2)操作:入栈(push)出栈(pop)
(3)栈从高->低分配空间
char a = 0;
char b = 0;
char c = 0;
printf(“a:%p\n”,&a);
printf(“b:%p\n”,&b);
printf(“c:%p\n”,&c);
(4)栈从低->高使用
char n1 = 1;
char n2 = 0;
short *p = &n2;
printf(“%d\n”,*p);
(5)函数:每一个函数,系统都会分配栈
int fun1(){
     int n1 = 200;
     return n1;
}
int fun2(){
     int n1;
     return n1;
}
int main(){
     fun1();
     int m = fun2();
     printf(“%d\n”,m);
}
主函数分配栈后,执行到fun1,再分配栈,该函数执行完毕后,标记n1被删除,但是数据被保留;执行到fun2,有标记相同,获得上一个栈保留的数据;然后,m拷贝数据,输出m=200.
(6)等号由右向左执行
(7)标记删除(不删除数据)
(8)内存机制:数据不会清除,只是覆盖
(9)注意:写变量要赋初值
(10)系统分配以及回收内存
(11)函数体内创建的变量分配在栈区
int a = 10;//a存放在内存的栈区(当出了花括号则系统回收)
3.堆区
(1)动态内存分配,
(2)关键字malloc ,释放内存free();
(3)由用户(程序员)分配和回收,如果程序员未回收内存,那么内存就会越用越少,有可能导致内存不够用,程序崩溃。如果没有达到不够用,程序安然无恙。
(4)当程序退出时,堆内存由系统回收(关键字free)
4.静态区(全局区)
(1)定义在函数体外面的变量,由系统开辟空间,程序运行过程一直都在,直到程序退出,由系统回收。
(2)变量不定义在任何函数体内
int x = 8;//x存放在静态区
int main(){
};
(3)特点:①只初始化一次②如果初始化时未赋初值,默认值为0③静态变量的空间只有程序退出才释放(程序运行期间永远存在)
(4)目的:①延长变量生命周期②不增大该变量的作用域
(5)关键字:static
for(int i = 0 ; i < 5 ; i ++){
    // int m = 0;
    static int m  = 0;//判断在静态区是否存在变量,结果等同于将int m = 0放在for循环外面
     printf(“%d\n”,m++);
}
5.常量区
(1)常量区的数据存储在常量区,常量区的内容不可更改
(2)浮点数,整型数,字符数
int a = 10;//10存在常量区
6.代码区
(1)存放源代码的编译区。所有写的代码,函数编译成二进制放在代码区
(2)所有的语句编译后生成的CPU指令存储在代码区

转载于:https://www.cnblogs.com/gnhxsk/p/5168598.html

你可能感兴趣的文章
SDUTOJ3754_黑白棋(纯模拟)
查看>>
php中的isset和empty的用法区别
查看>>
把word文档中的所有图片导出
查看>>
ubuntu 18.04取消自动锁屏以及设置键盘快捷锁屏
查看>>
正则表达式
查看>>
arcgis api 4.x for js 结合 Echarts4 实现散点图效果(附源码下载)
查看>>
YTU 2625: B 构造函数和析构函数
查看>>
apache自带压力测试工具ab的使用及解析
查看>>
加固linux
查看>>
WPF中Image显示本地图片
查看>>
Hyper-V虚拟机上安装一个图形界面的Linux系统
查看>>
js千分位处理
查看>>
Mac---------三指拖移
查看>>
字符串类型的相互转换
查看>>
基础学习:C#中float的取值范围和精度
查看>>
Vim配置Node.js开发工具
查看>>
web前端面试题2017
查看>>
ELMAH——可插拔错误日志工具
查看>>
MySQL学习笔记(四)
查看>>
【Crash Course Psychology】2. Research & Experimentation笔记
查看>>