• 数据的存储方式


     C++11标准新增加了一种存储方式----线程存储。
    C++11目前有四种管理数据内存的方式:
    1. 自动存储
    2. 静态存储
    3. 动态存储
    4. 线程存储

    • 自动存储
    在函数内部定义的常规变量为自动变量,使用自动存储。自动变量:指在定义它们的时候才创建,在定义它们的函数返回时系统回收变量所占存储空间。对这些变量存储空间的分配和回收是由系统自动完成的。一般情况下,不作专门说明的局部变量,均是自动变量。自动变量也可用关键字auto作出说明。自动变量只有一种存储方式,就是存储在栈中。由于自动变量存储在栈中,所以自动变量的作用域只在函数内,其生命周期也只持续到函数调用的结束。
    1. void f()/**/
    2. {/**/
    3. auto int c=3;/*c为自动变量*/
    4. int x=2;/*x未说明存储类型,则为缺省类型(自动)*/
    5. }/**/
    • 静态存储
    静态存储是在整个程序执行期间都存在的储存方式。
    静态存储有两种方式:
    1. 全局变量
    2. 局部静态变量
    1. int time = 0;
    2. int fuc(void)
    3. {
    4. static int time1 = 0;
    5. return 0;
    6. }

    • 动态存储
    C++ 使用new和delete关键字来声明的和销毁动态变量。因此动态存储比自动存储和静态存储都灵活。new 和delete使程序员对内存哟有了更大的控制权。

    • 线程存储
    全局变量与函数内定义的静态变量,是各个线程都可以访问的共享变量。


    静态存储区与动态存储区

    静态存储区分为:只读数据区,读写数据区,未初始化区,他们都是在程序编译阶段确定的,在程序执行阶段不会改变(运行期间都存在)。主要存储全局变量、静态局部变量、常量。

    动态存储区:分为堆和栈。都是程序运行过程中分配的,大小也随之动态变化。






  • 相关阅读:
    删除系统盘符
    响应式设计 @media
    精通CSS 学习笔记
    兼容性
    css border-collapse
    angular.js学习 ui-router 0.2.15
    javascript的简易发布/订阅模式
    javascript 切换上下文,事件绑定中改变this指向
    SpringMVC:提交日期类型报400错误解决方法
    解决Spring Mvc中接受参数绑定重名的方法
  • 原文地址:https://www.cnblogs.com/chengkeke/p/5417374.html
Copyright © 2020-2023  润新知