C程序的内存映像与动态分配函数

以你之姓@ 2022-10-15 04:59 176阅读 0赞
  1. C程序中变量的内存分配方式:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjA0ODQ2Mw_size_16_color_FFFFFF_t_70

  1. 栈和堆的区别:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjA0ODQ2Mw_size_16_color_FFFFFF_t_70 1

[注]

栈对数据的操作形式为”后进先出”, 即先进栈的元素后出栈: 随着程序的执行, 栈由高地址端向低地址端扩展, 可以说栈是”向下生长”的.

堆和栈不同, 当我们试图在堆中申请一块空间时, 系统从堆的低地址端开始查找, 当找到可以容纳下这块数据的存储空间后, 就将这片存储空间标记为”已占用”, 并将数据存储于其中. 考虑下面的这种情况, 在程序开始时堆区无数据占用, 这时我们需要将大小为2bytes的数据data1存储到堆中, 此时data1直接存储于堆区开始处(低地址端)即可; 接着我们需要将大小为4bytes的数据data2存储到堆中, 此时data2需要存储到data1的后面, 且这两块数据相邻存储; 之后我们将data

发表评论

表情:
评论列表 (有 0 条评论,176人围观)

还没有评论,来说两句吧...

相关阅读

    相关 c++——动态内存分配

    一、new,delete C++ 程序中的内存分为两个部分: 栈:在函数内部声明的所有变量都将占用栈内存。 堆:这是程序中未使用的内存,在程序运行时可用于动态分配内

    相关 C++动态内存分配

    运算符new 用于申请动态存储空间,它的操作数作为某种数据类型可以带有初始值表达式或元素个数。对于只存储一个基本类型的数据指针,使用new为其动态分配的语法格式为: 指针=n

    相关 C程序内存分配

    (1)代码区(text segment) 用来存放程序的二进制代码。 代码区指令根据程序设计流程依次执行,对于顺序指令,则只会执行一次(每个进程),如果反复,则需要使