Engineer's Notebook

コンピュータ関係のTipsやお役立ち情報などをエンジニアが綴ります

アドセンスレスポンシブ


ABテスト横長

最近の環境ではmalloc()で確保したメモリ領域が初期化(0クリア)されてる件

投稿日:2015-03-21 更新日:

C言語の規格では、malloc()した領域は不定値になっています。

malloc()は単にメモリ領域を割り当てるだけなので、malloc()で返される領域にはその前に書き込まれていたデータがそのまま残っています。

ただ、最近の環境ではちょっと事情が違うようです。
最近のOSはセキュリティ上の理由からmalloc()でメモリ確保した領域でも暗黙的に0クリアされているようです。

ただし、こんな暗黙的な挙動を前提にしたコードは書かないようしましょう。そんなコード、特定の環境でしか動きませんから。

ちなみに、Windows7 + VC2013では、Releaseビルドでは0クリアされ、Debugビルドではガベージデータ(0xFE)で埋められてました。

『Releaseビルドなら動くけど、Debugビルドだと動かない』という場合には、malloc()した領域のメモリクリア漏れを疑ってみてください。

アドセンス 336x280


アドセンス 336x280


関連コンテンツ

よく一緒に読まれている記事

-ソフトウェア開発

Copyright© Engineer's Notebook , 2017 All Rights Reserved Powered by AFFINGER4.