このプログラムでは"あいうえお"に必要な11バイトの領域をmallocで確保しています。が、2バイトや3バイトでもERRORが発生せず、出力されます。わかる方がいましたら教えてください。お願いしますm(_ _)m
mallocで確保した領域に文字列を
Re: mallocで確保した領域に文字列を
深刻なエラーが出るような領域をたまたま破壊していないだけです。あまつ さんが書きました:このプログラムでは"あいうえお"に必要な11バイトの領域をmallocで確保しています。が、2バイトや3バイトでもERRORが発生せず、出力されます。
11バイト確保したならば、そこへ格納できるのは「プログラマーの責任で」11バイトまでです。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: mallocで確保した領域に文字列を
確保した領域の範囲外へのアクセス(読み書き)は未定義動作なので、何が起こってもおかしくありません。
正常に終了するかもしれないし、Segmentation Faultになるかもしれないし、鼻から悪魔が出てくるかもしれません。
ValgrindやAddressSanitizerを使うと、エラーを検出できるかもしれません。
使い方の解説は、例えば
valgrindでC/C++のメモリリークを発見する - Qiita
clang の AddressSanitizer を使って、バッファオーバーフロー/ヒープオーバーフローを検出する - Qiita
正常に終了するかもしれないし、Segmentation Faultになるかもしれないし、鼻から悪魔が出てくるかもしれません。
ValgrindやAddressSanitizerを使うと、エラーを検出できるかもしれません。
使い方の解説は、例えば
valgrindでC/C++のメモリリークを発見する - Qiita
clang の AddressSanitizer を使って、バッファオーバーフロー/ヒープオーバーフローを検出する - Qiita
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)