打印
[DSP编程]

程序中内存从哪里来

[复制链接]
451|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
蒋博1026|  楼主 | 2019-10-30 21:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、程序执行需要内存支持

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

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

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

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

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

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

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

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

4、栈的详解

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

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

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

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

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

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

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

使用特权

评论回复

相关帖子

沙发
21ic小喇叭| | 2019-11-1 10:46 | 只看该作者
谢谢楼主分享~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

323

主题

1820

帖子

18

粉丝