から1つのCポインタのデータにアクセスする方法は、私は2つのプログラムを持ってあり、「こんにちは」は別のCプログラム
プログラムAは、このようなものです、
int main(int argc, char** argv) {
char* s = "hello";
printf(s);
return (EXIT_SUCCESS);
}
Sのベースアドレスは0x80484e0です、今私は、プログラムB「P」で
int main(int argc, char** argv) {
void* p = (void*)0x80484e0;
char* c = (char*)p;
while(*c)
{
printf("%c",*c);
c++;
}
return (EXIT_SUCCESS);
}
次のようにプログラムBで「S」と同じベースアドレスにプログラムB指しているが、内容は同じではありません。
'p'と 's'は同じベースアドレスを持っていますが、内容は同じではありませんが、異なるアドレス空間で異なるプログラムとして実行されているためですか?
あなたが参照しているアドレスは、各プログラムに固有のものでなければなりません。他のプログラムが初期化されている場所を見つけるためにOSをポーリングする必要があります。 –
各プログラムは、独自の仮想アドレス空間に存在します。オペレーティングシステムは、仮想アドレスを物理アドレスにマップする(または物理アドレスにページングする)。あるプロセスの仮想アドレスは、別のプロセスでは意味がありません。 – dreamlax