2017-03-04 12 views
1
int main(void) 
{ 
int *a=6; 
printf("%d",*a); 
return 0; 
} 

このコードでは、いくつかのメモリアドレスに直接アクセスしていますが、私たちはセグメンテーションfault.Whyを得るでしょうか? どうすれば問題なくアクセスできますか?メモリアドレスに直接アクセスできますか? メモリ管理は、プロセッサまたはOSの機能ですか?ダイレクトメモリアドレスにアクセスしていて、直接任意のメモリアドレスにアクセスできますか?

+0

[メモリの場所への読み取りと書き込み]可能な複製(http://stackoverflow.com/questions/11207783/read-and-write-to-a-memory-location) – lukeg

+0

どういうわけか、もし私がしたいのならその特定のメモリアドレスにアクセスする方法は?もう1つの質問はOSやプロセッサに依存していますか? – sam1006

答えて

1

たびにあなたはそれが自分自身にそれに属しているアドレス(Address space)の範囲を保つためのプログラムをロード は終わったアドレスからのあなたのスタックとヒープが常駐4000は、あなたができることを意味します1000年 まで言わせように、それはそれを考える簡単にするために、その怒りの中でのみメモリを割り当て、これらのアドレスとこれらのアドレスだけを参照してください。 "what if"が実際にアドレス6にアクセスできるとしましょうが、あなたのOSには実際には非常に重要なデータがあり、そのデータを上書きすることがあります。 OSのプログラマは、私たちがしてはならないものにアクセスすることを許可しないほどスマートでした。

+0

私はそのアドレス6にアクセスしたいのですが、どうすればいいのですか? – sam1006

関連する問題