打印

[DSP编程] 程序中内存从哪里来

[复制链接]
98|1
跳转到指定楼层
楼主
 楼主 | 2019-10-30 21:22 | 只看该作者 |退出气泡模式 回帖奖励 |倒序浏览 |阅读模式
1、程序执行需要内存支持

(1)对程序来说,内存就是程序的立足之地(程序是被放在内存中运行的);程序运行需要内存来存储一些临时变量。

2、内存管理最终是由操作系统来完成的

(1)内存本身在物理上是一个硬件器件,由操作系统提供。

(2)内存是由操作系统统一管理,为了内存管理方便又合理,操作系统提供了多种机制来让我们应用程序使用内存。

这些机制彼此不同,各自有各自的特点,我们程序根据自己的实际情况来选择某种方式获取内存(在操作系统处登记

这块内存的临时使用权限)、使用内存、释放内存。

3、三种内存来源:栈(stack)、堆(heap)、数据区(date)

在C语言中,能够获取的内存就有三种情况:栈(stack)、堆(heap)、数据区(date)

4、栈的详解

运行时自动分配&自动回收:栈是自动管理的,程序员不需要手工干预,方便简单。

反复使用:栈内存在程序中其实就是那一块空间,程序反复使用这一块空间。

脏内存:栈内存由于反复使用,每次使用后程序不会去清理,因此分配到时保留原来的值。

临时性:函数不能返回栈变量的指针,因为这个空间是临时的。也就是说函数不能返回函数内部局部变量的地址,因为这个函数

       执行完后这个局部变量就不存在了。这个局部变量是分配到栈上的,虽然局部变量不在了,但是栈内存还在,还可以访问,但是访问时,

        实际上这个内存地址已经和当时那个变量无关了。

栈会溢出:因为操作系统事先给定了栈的大小,如果在函数中无穷尽的分配栈内存,总能用完。

沙发
| 2019-11-1 10:46 | 只看该作者
谢谢楼主分享~
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

关闭

热门推荐上一条 /5 下一条

在线客服 快速回复 返回顶部 返回列表
新疆喜乐彩 234彩票 112彩票 猎豹彩票 河北快3代理 鼎鼎彩票 916彩票 智胜彩票 卓易彩票 福建快3