zoukankan      html  css  js  c++  java
  • 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"--->常量区

  • 相关阅读:
    JS中数组的sort()排序
    清除浮动方法
    浏览器兼容问题
    前端切图
    设置页面默认为繁体字
    7月计划
    css的层叠和继承
    Flex 布局教程:语法篇
    轮播图淡入淡出的js和jquery的效果
    接口调用async/await
  • 原文地址:https://www.cnblogs.com/kuotian/p/5272104.html
Copyright © 2011-2022 走看看