我正在使用 C ++指针,我有一个疑问,是否有可能从程序中检查变量的内存地址并将该地址存储在另一个程序的指针,并输出存储在该位置的值。
计划1:
int t1 = 34;
int t2 = 0;
std::cout << &t1;
std::cin>>t2;
这是第一个程序,我在第二个程序中输入地址t1 ,由 cout 输出。
计划2:
int* t3 = (int*)address_of_t1 // address of t1 is not a function....it will be replaced by the address returned by first program
int out = *t3;
cout <<out;
我运行第一个程序让它等待输入,让它继续运行..
然后我同时运行第二个程序,但第二个程序总是输出0
,它从不显示第一个程序的t1
值。
答案 0 :(得分:0)
这在现代操作系统上是不可能的。内存是虚拟的,这意味着您可以在映射到完全不同的物理内存位置的两个不同进程中具有相同的地址。 在此处查看更多详细信息:https://en.wikipedia.org/wiki/Virtual_memory。
答案 1 :(得分:0)
不,那是不可能的。
您在单个流程中获得的地址对于该特定流程是唯一的。所有现代操作系统都分配一个虚拟内存地址空间来运行可执行代码。