最近、Cプログラムの1つに指摘されました。メモリブロックの開始アドレスが十分に低い場合、ゼロをラップした結果、テストの1つが失敗し、クラッシュが発生します。
最初は「これは厄介な潜在的なバグだ」と思っていましたが、その後、疑問に思いました。このケースは発生する可能性がありますか?私はそれを見たことがありません。公平を期すために、このプログラムはすでに無数のシステムで何百万回も実行されており、これまでに発生したことはありません。
したがって、私の質問は次のとおりです。呼び出しmalloc()
が返す可能性のある最小のメモリアドレスは何ですか?私の知る限り、たとえば0x00000032などのアドレスは見たことがありません。
Linux、BSD、Windowsなどの「最新の」環境にのみ興味があります。このコードは、C64や趣味/研究用OSで実行するためのものではありません。