请问C语言中如何读取程序空间的代码?

请问C语言中如何读取程序空间的代码?,第1张

自己做函数,比如char PeekCodeChar(void *Addr)、int PeekCodeInt(void *Addr)之类的,内部实现则用汇编来实现,C主体程序在需要的时候调用这些函数就舒服多了。

减少办法:使用#pragmapack(1)字节对齐结构;在结构可以包含不同类型的数据的地方使用联合;使用位字段而不是整数来存储标志和小整数;避免使用固定长度的字符数组来存储字符串,实现字符串池和使用指针。

programspace:程序空间,内存是计算机系统中一个主要部件,用于保存进程运行时的程序和数据,也称可执行存储器。在计算机中,内存空间一般是指主存储器空间(物理地址空间)或系统为一个用户程序分配内存空间。扩展内存空间的方法一般有增加内存大小和虚拟内存。

空间是与时间相对的一种物质客观存在形式,但两者密不可分,按照宇宙大爆炸理论,宇宙从奇点爆炸之后,宇宙的状态由初始的“一”分裂开来,从而有了不同的存在形式、运动状态等差异,物与物的位置差异度量称之为“空间”,位置的变化则由“时间”度量。空间由长度、宽度、高度、大小表现出来。通常指四方(方向)上下。

以程序的具体执行过程为例来给你讲解,但愿你能理解:

1.程序被打开时,即程序开始运行时,会首先向 *** 作系统请求独占内存空间(一段在程序整个执行过程中都不释放的空间), *** 作系统会应答请求并分配一段逻辑上连续(其实是将零散的内存空间映射为一段连续的空间)的内存空间给该程序,此时程序得到该段空间的逻辑地址信息,根据地址将程序代码段和数据段装入内存,此时程序载入完成。

2.程序运行中,当某一过程任务需要更大内存空间时,会再次向 *** 作系统发出请求, *** 作系统会根据请求再次分配内存空间给该程序,当这一过程任务执行完毕后,该内存空间被释放。同时由于 *** 作系统的存储保护,程序在运行过程中只能访问自己所申请的内存空间,不能访问其他程序的内存空间。

3.当程序执行完毕或关闭程序后,该程序所占的所有内存空间都被释放。

当你再次打开程序后,重复上面的过程。

下面对你的问题进行针对性回答:

1.当程序运行时,会调入内存,不同时间运行,程序放在内存的位置也可能不同:每运行一次程序,程序都会重新向 *** 作系统申请内存空间,这时 *** 作系统会分配一段全新的内存空间给程序,故不同时间运行程序,程序在内存中的位置是不同的。

2.使用内存中数据的位置也可能不同:当程序申请内存空间后, *** 作系统会将所申请的内存空间的地址传给程序,尽管数据的位置不同,但程序知道数据的地址,故程序依然可以根据地址来找到所需要的数据。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10973062.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-12
下一篇 2023-05-12

发表评论

登录后才能评论

评论列表(0条)

保存