是否可以从stdin输入指针的地址?

时间:2017-05-25 06:34:23

标签: c++ windows interprocess

不久前,我有一个简单的进程间通信的想法:一个进程向指针输出一个地址,我将其复制到另一个进程的输入,然后更改原始变量。

我实现了这样:

#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,或者它是否做了完全不同的事情。

只是我试图改变另一个正在崩溃它的进程变量的值,还是其他阻止我的变量呢?

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:4)

每个进程都有自己的内存,与其他进程完全分开。指针值在不同进程的上下文中是没有意义的,即使你设法得到它。