C++

strcpyの未定義動作例

C++

コード #include <iostream> #include <string.h> int main() { char buffer[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWX"; strcpy(buffer, buffer+8); std::cout << buffer << std::endl; return 0; } 実行結果 処理系 結果 Wandboxclang 9.0.0 89ABCDEFGHIJKLMNOPQRSTUVWX macOS </string.h></iostream>…

仕様に不適合のNULLをチェックするというフールプルーフ

C++

以下のC++関数はコメントが関数仕様の一部であるとした場合。 /** * @param[in] foo なにかのオブジェクトのポインタ。NULL不可 * @note fooが無効オブジェクトを指している(!*fooが真である)ならば何もしない */ void Hoge(Foo* foo) { if (! foo) { retur…