gl5_progのメモ

自分のためのメモとかまとめとか

strlenなどにNULLポインタを渡した場合の挙動

処理系によって挙動は違うかもしれませんが、ideone上では以下のようになりました。

  • strlenにNULLポインタを渡すと落ちます。
  • strcmpは引数の片方がNULLポインタだと落ちます。ただし、両方ともNULLポインタだと落ちません。
    if(0) // 落ちる
    {
        int ret = strlen(0);
        printf( "%d\n", ret );
    }
    if(1) // 落ちない
    {
        int ret = strcmp( 0, 0 );
        printf( "%d\n", ret );
    }
    if(0) // 落ちる
    {
        int ret = strcmp( "", 0 );
        printf( "%d\n", ret );
    }
    if(0) // 落ちる
    {
        int ret = strcmp( 0, "" );
        printf( "%d\n", ret );
    }

http://ideone.com/kZ7zFV

NULLチェックが面倒ならラッパ関数を作るのがいいかもしれません。
http://ideone.com/erc5yM