int main() {
int *i = new int(5);
int *p;
printf("i = %p\n", i);
scanf("%x", &p);
printf("p=%d\n", *p);
return 1;
}
如果我写 int *p = i; 你不放心的话,就自己用scanf输入吧,这样就放心了吧
你弄两个程序分别运行这样运行肯定不行,一个是进程结束后该进程的所有内存都被系统回收了,另外一个是每个不同的进程都拥有自己独立的地址空间(虚拟地址空间),就好像(不考虑跨行取现业务的情况下)你拿着农行的卡到建行取钱建行不会给你钱,你跟建行说你卡号是什么什么建行会跟你说没有这个账号,道理是一样的
如果你是要这个“对象”跨程序存在,只能写文件存起来了,下次用的时候再加载。毕竟你不可能直接管理内存,更不能保证这个对象会超过进程的寿命而存在。
要不就写一个守护程序,这个程序一直运行,它的作用就是保存这个“对象”;然后其他要使用这个对象的程序用管道等机制与这个守护进程进行通信。
你把1个地址转换成int型,感觉就有问题,int占4个字节呢。我只见过:(char *)0x8767008这种形式的。
修改的如果是非本程序的其它程序的内存,必须获得进程ID,然后再进行获取或者更改。GetProcessMemory, ReadProcessMem等等,详细的自己查找吧。
这是不行的,每个进程都有独立的4G虚拟内存,当程序运行的时候 系统 通过映射在物理内存中自主分配相应内存,程序员操作的都是虚拟内存
程序耗时很多都是在分配物理内存上
Linux下有四五种进程间通信你可以你查来看看,UC讲的主要就是内存分配、进程间通信、多进程(线程)等问题,很重要