是否可以从标准输入指向指针的地址

Is it possible to input an address to a pointer from stdin?

本文关键字:指针 地址 标准输入 是否      更新时间:2023-10-16
不久

前,我有一个关于一些简单的进程间通信的想法:一个进程将地址输出到指针,我将其复制到另一个进程的输入中,这会更改原始变量。

我是这样实现的:

#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
    bool p;
    cin>>p;
    if(p){
        int n;
        n=0;
        cout<<&n;
        cin.get();
            cin.get();
            cout<<n;
        }else{
            int *point,n;
            scanf("%p",&point);
            cout<<point;
            cin>>n;
            *point+=n;
        }
        return 0;
    }

我使用 scanf 是因为 cin 抱怨,并且不会编译。我尝试使用两个进程运行它,但是在我启动第二个实例并输入指针的地址(如第一个实例输出的那样(后,它冻结了。由于我只能访问Windows,因此我不知道它是否具有SIGSEGV,或者它是否做了完全不同的事情。

是我试图更改另一个进程变量的值导致它崩溃,还是其他东西阻止了我?

你不能这样做,因为第一个进程将无法访问第二个进程的内存地址空间(在常见的操作系统中,包括Windows和Linux(。

每个进程都有自己的内存,与其他进程的内存完全分开。指针值在不同进程的上下文中毫无意义,即使您设法将其传达。