• Simplified Memory Modle C/C++内存模型


      最近学习c++看视频时,老师时常提到栈区堆区,搞不清楚,只能泪目,毕竟爱过。。。因此,接下来对此做些整理,方便回顾。(老师说:这个简化模型仅用于初学者示意,与实际模型并不完全一致)

    1.stack(栈)

      编译器自动分配释放

    2.Heap(堆)

      一般由程序员分配释放,程序运行时用malloc或new申请的内存,需程序员用free或delete释放。

      若程序员不释放,程序结束时可能由OS回收

    3.Global/Static(全局区/静态区)

      全局变量和静态变量的存储是放在一块的

      可以简单认为:

        程序启动全局/静态变量就在此处

        程序结束释放

    4.Constant(常量区)

      可以简单理解为所有常量都放在一起

      该区域内容不可修改

    堆向高地址方向生长   栈向地地址方向生长

    Eg1.

    int arr[3];    //全局区

    int myFunc( int * pi)

    {

      int a;    

      char *p;

      p = static_cast<char*> new char[8];

      char* str = "hello world";

    }

    //pi a p str --->栈区

    //char[8](new出来的) --->堆区

    //"hello world"--->常量区

  • 相关阅读:
    Java IO/NIO
    LeetCode—— 两两交换链表中的节点
    LeetCode——合并K个排序链表
    LeetCode第201场周赛
    LeetCode第202场周赛
    LeetCode215. 数组中的第K个最大元素
    LeetCode213. 打家劫舍 II
    LeetCode212. 单词搜索 II
    LeetCode211. 添加与搜索单词
    LeetCode210. 课程表 II
  • 原文地址:https://www.cnblogs.com/kuotian/p/5272104.html
Copyright © 2020-2023  润新知