`
445822357
  • 浏览: 740835 次
文章分类
社区版块
存档分类
最新评论

函数局部变量所需存储空间分配

 
阅读更多

1.

栈是系统根据变量大小自动分配空间的

堆是你用new,malloc等手动分配空间的

2.

栈内存区的地址是连续的,由系统控制速度较快而
堆内存区的地址是不连续的,它是系统将空闲内存块链接起来的链表,

操作系统给程序运行的内存非了4个区域:
1 代码区:顾名思义就是存放运行的代码的
2 全局数据区: 存放全局数据和静态数据以及常量.
3 栈区 函数调用时的返回地址,参数压栈,局部变量,返回数据等都存放在栈区.
4 堆区,存放程序动态分配的内存(new,malloc等函数分配的)

栈内存是由系统自己分配和释放的,而堆内存要由程序员自己全全控制的,否则会出现内存泄露


csdn 讨论帖

http://bbs.csdn.net/topics/80165653

分享到:
评论

相关推荐

    时间复杂度与空间复杂度 (捡拾碎小知识点)

    1,什么是时间复杂度? 一个问题的规模是n,解决这一问题所需算法所需要...空间复杂度需要考虑在运行过程中为局部变量分配的存储空间的大小,它包括为参数表中形参变量分配的存储空间和为在函数体中定义的局部变量分配

    C语言程序设计标准教程

    1.形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单元。因此,形参只有在函数内部有效。 函数调用结束返回主调函数后则不能再使用该形参变量。 2.实参可以是常量、变量、表达式、函数...

    Javascript 垃圾收集机制介绍理解

    举例来说,局部变量只存在于函数内部,程序会为局部变量在栈内存或堆内存中分配对应的存储空间,当函数运行结束,局部变量所占用的内存就没有存在的必要了,这时程序会释放局部变量所占用的内存供其他变量使用。...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar

    8.9.3 用static 声明局部变量 121 8.9.4 register 变量 122 用extern 声明外部变量 123 9 预处理命令 9.1 概述 124 9.2 宏定义 125 9.2.1 无参宏定义 126 9.2.2 带参宏定义 127 9.3 文件包含 128 9.4 条件编译 130 ...

    Python 麻雀搜索算法(SSA)优化函数示例代码 matplotlib可视化收敛曲线

    本项目演示了如何使用麻雀搜索算法(SSA)优化回归各种函数,...1. 安装所需的依赖库: pip install numpy matplotlib 2. 运行主程序 `main.py`: python main.py 3. 程序会输出最优值和最优变量,并绘制收敛曲线图。

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar )

    8.9.3 用static 声明局部变量 121 8.9.4 register 变量 122 用extern 声明外部变量 123 9 预处理命令 9.1 概述 124 9.2 宏定义 125 9.2.1 无参宏定义 126 9.2.2 带参宏定义 127 9.3 文件包含 128 9.4 条件编译 130 ...

    javascript垃圾收集机制的原理分析

    前面的话  javascript具有自动垃圾收集机制,执行环境会负责管理代码执行...而在这个过程中,会为局部变量在栈(或堆)内存上分配相应的空间,以便存储它们的值。然后在函数中使用这些变量,直到函数执行结束。此时,局

    操作系统(内存管理)

    void free(void *firstbyte):如果给定一个由先前的 malloc 返回的指针,那么该函数会将分配的空间归还给进程的“空闲空间”。 malloc_init 将是初始化内存分配程序的函数。它要完成以下三件事:将分配程序标识为...

    内存管理内存管理内存管理

    返回的指针,那么该函数会将分配的空间归还给进程的“空闲空间”。 malloc_init 将是初始化内存分配程序的函数。它要完成以下三件事:将分配程序标识为已经初始化,找到系统中最后一个有效内存地址,然后建立起...

    JVM内存模型及垃圾回收

    定义 通俗的来讲,jvm主要...栈: 线程私有存储空间,访问速度仅次于寄存器,栈里面的存储单位为,栈帧, 栈帧对应着方法, 存放着方法的 局部变量表,操作数栈,常量池引用,方法返回地址。 本地方法栈:用于管理本

    用c描述的数据结构演示软件

    每进入一层递归时,就产生一个新的工作记录(包括调用语句行号、变量参数或全程变量、数值参数和局部变量)压入栈顶;每退出一层递归时,先根据栈顶的调用语句行号返回至上层,然后在传递完变量参数的值后退栈。 ...

    数据结构演示软件

    每进入一层递归时,就产生一个新的工作记录(包括调用语句行号、变量参数或全程变量、数值参数和局部变量)压入栈顶;每退出一层递归时,先根据栈顶的调用语句行号返回至上层,然后在传递完变量参数的值后退栈。 ...

    《Windows核心编程系列》 — 线程基础

     2)一个线程栈,用于维护线程执行时所需的所有函数参量和局部变量。  位于同一个进程的线程共享进程的地址空间且它们共享进程句柄表。因为句柄表是针对进程的。进程需要很多的系统资源,而线程仅仅需要一个...

    图像处理基础(第2版).[美]Maria Petrou(带详细书签).pdf

    3.2.2 为什么一个图像集合的自协方差矩阵对角化定义了描述集合中图像所需的基? 147 3.2.3 如何变换一幅图像以使其自协方差矩阵成为对角的? 149 3.2.4 如果系综相对于自相关是平稳的,一组图像的系综自相关矩阵...

    数据结构(C++)有关练习题

    设计一个构造函数,当对象结束时,要释放整个二叉搜索树所占的内存空间(提示,通过后序遍历算法找到叶结点,并删除叶结点,不断重复此过程,直到整科树为空); 2、实现1所要求的代码后,运行设计好的代码,将...

    c#学习笔记.txt

    const指定无法修改字段或局部变量的值。 event声明一个事件。 extern指示外部实现此方法。 override提供从基类继承的虚拟成员的新实现。 readonly声明一个字段,该字段只能赋值为该声明的一部分或者在同一类的构造...

    freemarker总结

    这里所说的空值,实际上也包括那些并不存在的变量,对于一个Java的 null值而言,我们认为这个变量是存在的,只是它的值为null,但对于FreeMarker模板而言,它无法理解null值,null值和不存在的变 量完全相同. 为了处理缺失...

Global site tag (gtag.js) - Google Analytics