zoukankan      html  css  js  c++  java
  • 程序中内存从哪里来


    1、程序执行需要内存支持
    (1)对程序来说,内存就是程序的立足之地(程序是被放在内存中运行的);程序运行需要内存来存储一些临时变量。
    2、内存管理最终是由操作系统来完成的
    (1)内存本身在物理上是一个硬件器件,由操作系统提供。
    (2)内存是由操作系统统一管理,为了内存管理方便又合理,操作系统提供了多种机制来让我们应用程序使用内存。
    这些机制彼此不同,各自有各自的特点,我们程序根据自己的实际情况来选择某种方式获取内存(在操作系统处登记
    这块内存的临时使用权限)、使用内存、释放内存。
    3、三种内存来源:栈(stack)、堆(heap)、数据区(date)
    在C语言中,能够获取的内存就有三种情况:栈(stack)、堆(heap)、数据区(date)
    4、栈的详解
    运行时自动分配&自动回收:栈是自动管理的,程序员不需要手工干预,方便简单。
    反复使用:栈内存在程序中其实就是那一块空间,程序反复使用这一块空间。
    脏内存:栈内存由于反复使用,每次使用后程序不会去清理,因此分配到时保留原来的值。
    临时性:函数不能返回栈变量的指针,因为这个空间是临时的。也就是说函数不能返回函数内部局部变量的地址,因为这个函数
           执行完后这个局部变量就不存在了。这个局部变量是分配到栈上的,虽然局部变量不在了,但是栈内存还在,还可以访问,但是访问时,
            实际上这个内存地址已经和当时那个变量无关了。
    栈会溢出:因为操作系统事先给定了栈的大小,如果在函数中无穷尽的分配栈内存,总能用完。

  • 相关阅读:
    uva 1416 (SPFA) **月赛第E题的原题**
    uva 10917 (Dijsktra+记忆化搜索) **月赛第D题的原题**
    uva 11478(二分+差分约束系统)
    uva 11374(Dijkstra) HappyNewYear!!!
    Codeforces GoodBye2013 解题报告
    Codeforces Round #222 (Div. 2) 解题报告
    uva 515(差分约束)
    uva 10273(模拟)
    uva 10985(floyd+dfs)
    uva 10594(最小费用最大流)
  • 原文地址:https://www.cnblogs.com/jiangtongxue/p/11643990.html
Copyright © 2011-2022 走看看