zoukankan      html  css  js  c++  java
  • C++内存分配和分区

    1、分配方式

    静态分配:

    静态区(全局区),分配全局变量、静态变量优先于main函数。

    动态分配:

    (1)自动分配:栈区
    (2)手动分配:堆区,(mallocfree) (new,delete)

    2、内存的4种分区

    一个由C编译的程序占用的内存大致分为以下几部分:

    栈区(stack):

    动态分配。由编译器自动分配释放,存放函数的参数值,局部变量的值等。栈顶从高地址往低地址方向增长。最多1MB。

    堆区(heap):

    动态分配。一般由程序员分配和释放(动态内存申请malloc与释放free),需要手动回收,否则会一直存在,若程序员不释放,程序结束时可能由操作系统回收。堆从低地址到高地址增长。需要大空间或不定空间时用堆。

    全局区(静态区)(static):

    静态分配。全局变量和静态变量的存储是放在一块的,初始化的全局变量静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域,该区域在程序结束后由操作系统释放。

    程序代码区:

    静态分配。存放函数体的二进制代码,字符串常量和其他常量(如#define X 10)的存储位置,程序结束后由操作系统释放。只可读不可写。

  • 相关阅读:
    MFC中获取系统当前时间
    我的定时关机程序(MFC实现) .
    编写一个闹钟和定时关机工具(MFC VS2010)
    Spark-SQL之DataFrame操作
    RDD操作
    Scala之Object (apply) dycopy
    Intellij IDEA 快捷键整理(dyCopy)
    python第三方包的windows安装文件exe格式
    pythong 中的 __call__
    触发器学习笔记(:new,:old用法)
  • 原文地址:https://www.cnblogs.com/ldcs/p/11821894.html
Copyright © 2011-2022 走看看