c语言程序运行时 内存问题

 我来答
奈女宁馨兰
2020-02-04 · TA获得超过3818个赞
知道大有可为答主
回答量:3160
采纳率:33%
帮助的人:176万
展开全部
以程序的具体执行过程为例来给你讲解,但愿你能理解:
1.程序被打开时,即程序开始运行时,会首先向操作系统请求独占内存空间(一段在程序整个执行过程中都不释放的空间),操作系统会应答请求并分配一段逻辑上连续(其实是将零散的内存空间映射为一段连续的空间)的内存空间给该程序,此时程序得到该段空间的逻辑地址信息,根据地址将程序代码段和数据段装入内存,此时程序载入完成。
2.程序运行中,当某一过程任务需要更大内存空间时,会再次向操作系统发出请求,操作系统会根据请求再次分配内存空间给该程序,当这一过程任务执行完毕后,该内存空间被释放。同时由于操作系统的存储保护,程序在运行过程中只能访问自己所申请的内存空间,不能访问其他程序的内存空间。
3.当程序执行完毕或关闭程序后,该程序所占的所有内存空间都被释放。
当你再次打开程序后,重复上面的过程。
下面对你的问题进行针对性回答:
1.当程序运行时,会调入内存,不同时间运行,程序放在内存的位置也可能不同:每运行一次程序,程序都会重新向操作系统申请内存空间,这时操作系统会分配一段全新的内存空间给程序,故不同时间运行程序,程序在内存中的位置是不同的。
2.使用内存中数据的位置也可能不同:当程序申请内存空间后,操作系统会将所申请的内存空间的地址传给程序,尽管数据的位置不同,但程序知道数据的地址,故程序依然可以根据地址来找到所需要的数据。
迪凯特科技(北京)有限公司
2023-07-28 广告
单片机串口通信数据丢失的原因可能如下:1. 按键通过串口发送对应命令,第一次按按键串口发送的指令正确且能把数据正确的显示出来,在第二次按按键串口发送的指令出现丢失的状况,可能是因为串口通信的波特率设置不正确。2. 如果单片机和外部设备的波特... 点击进入详情页
本回答由迪凯特科技(北京)有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式