3.c++内存简介

2020-11-26  本文已影响0人  celusing

https://blog.csdn.net/czy47/article/details/90737468
https://blog.csdn.net/cherrydreamsover/article/details/81627855

一.内存管理

深度截图_选择区域_20201120094259.png
  1. 栈:
    由编译器自动分配与释放,存放为运行时函数分配的局部变量、函数参数、返回数据、返回地址等。其操作类似于数据结构中的栈。

  2. new分配的内存块,由程序控制其释放时机,一般一个new对应一个delete。如果程序没有释放,在程序结束后,操作系统会自动回收。
  3. 全局区/静态存储区
    全局变量和静态变量被分在同一块内存中,存放全局变量、静态变量。程序结束后,由系统释放。
    c++不再区分:已初始化全局区(data)和未初始化全局区(bss)。他们共同占有同一块内存区。
  4. 常量存储区
    存放常量字符串,这是一块比较特殊的存储区,里面存放的是常量,不允许修改。
  5. 自由存储区
    malloc分配的内存块,和堆十分相似。不过使用free来结束自己的生命。
  6. 代码区
    存放函数体(类成员函数和全局区)的二进制代码。

二.静态全局变量、全局变量、静态局部变量、局部变量的区别

  1. 全局变量、静态全局变量
    全局变量之前加上static,就变成静态全局变量。区别:
  1. 局部变量、静态局部变量

3.普通函数、静态函数

总结:
局部变量改成静态局部变量后,改变了其存储方式。即改变了其声明周期;把全局变量改成静态全局变量,改变了其作用域,限制了其使用范围。

上一篇下一篇

猜你喜欢

热点阅读