gpt4 book ai didi

c - 如何从RAM中读取变量值?

转载 作者:太空宇宙 更新时间:2023-11-04 07:05:30 26 4
gpt4 key购买 nike

我编写了一个使用动态内存分配的程序。我没有使用 free 函数来释放内存,仍然在地址处,变量的值在那里。

现在我想重用这个值,我想从另一个进程中查看 RAM 中存在的所有变量值。

这可能吗?

#include<stdio.h>
#include<stdlib.h>
void main(){

int *fptr;

fptr=(int *)malloc(sizeof(int));

*fptr=4;

printf("%d\t%u",*fptr,fptr);
while(1){
//this is become infinite loop
}

}

我想让另一个程序读取 a 的值,因为它仍然在内存中,因为 main 函数是无限的。如何做到这一点?

最佳答案

这个问题至少显示了对两个主题的误解。

首先是虚拟地址空间和内存保护,正如 RobertL 在他的回答中所提到的那样。在现代操作系统上,您无法访问属于另一个进程的内存(即使您知道物理地址,但您不知道,因为所有用户空间进程都在其私有(private)虚拟地址中工作地址空间)。尝试访问未映射到您的地址空间的内容的结果将是段错误。 Read more on Wikipedia .

其次是C标准的范围。它不知道进程。 C 是根据执行您的程序(并且该程序)的抽象机器定义的。定义变量的范围和生命周期,各自的最大值是全局范围静态存储持续时间。所以是的,只要您的程序运行,您的变量就会继续存在,但它的作用域将是这个程序

当您理解这一点时,您会发现:即使在使用单一全局地址空间且根本没有内存保护的平台上,您也永远无法根据 C 标准访问另一个程序的变量。您可能会以某种方式将指针值传递给您的其他程序并使用它,也许它会起作用,但它会是未定义的行为

这就是为什么操作系统提供进程间通信的方式,例如共享内存(这很接近您想要的)和管道

关于c - 如何从RAM中读取变量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33361892/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com