c++存储

zuixin 2019-11-30

c++存储

  • 1 自动存储
    • 在函数内部定义的变量使用自动存储空间。被称为自动变量。
    • 在函数调用时自动产生,在函数结束时消亡。
    • 自动变量是一个局部变量,作用域在包含它的代码块。(在一个函数中也可以有代码块)
    • 自动变量存储在栈中。在执行代码时,变量将依次加入栈中。在离开代码块时,将按相反的顺序释放这些变量。
  • 2 静态存储
    • 整个程序执行期间都存在的存储方式。
    • 使变量称为静态的方式有两种。
      • 1 在函数外面定义
      • 2 在声明变量时使用static关键字
  • 3 动态存储
    • new和delete管理着一个内存池。
    • c++中将这个内存池称为自由存储空间或堆。
    • 该内存池和自动存储和静态存储是分开的。
    • new和delete相互影响导致占用堆空间不一定连续。
    • 如果使用new在堆上创建变量后,没有调用delete,即使包含指针内存被释放,该数据内存也依然存在。并且将访问不到该内存区域。这将导致内存泄漏。
    • 要避免内存泄漏,最好同时使用new和delete运算符。c++智能指针有助于自动完成这种任务。16章介绍。

相关推荐