初期化されていないポインタは危険ですか?

初期化されていないポインタは危険ですか?

初期化されていないポインタ(C)が他のプログラムのデータまたはプログラムコードを含むアドレスを指す可能性があることを読みました。本では、これは被害を引き起こす可能性があると言います。

この問題は最新のオペレーティングシステムの問題ですか? Linuxには仮想アドレス空間があるため、アドレスは特定のプロセスにのみ接続されることがわかります。これにより、ポインタが他のプロセスによって使用されるアドレスを指してはいけませんか?これがWindows、macOS、またはUnixに該当するかどうかはわかりません。

今日、これは深刻な問題ですか?

答え1

Windows、MacOS、Unixでも同様です。これらすべてのシステムの一般的なケースでは、初期化されていないポインタは、現在のプロセス内で予期しない動作のみを引き起こす可能性があります。

それができるという言葉ではありませんいいえ発生する。これらのすべてのシステムでは、プロセスは他のプロセスとメモリ領域を自発的に共有するように配置できます(またはshmget使用shmatmmap。この場合、あるプロセスの間違ったポインタによって共有データが破損し、他のプロセスが誤動作する可能性があります。

関連情報