lstrlen のこと

tchar.h をもっと有効に使ってみようということで、_tcslen, _tcscpy, _istupper, _totlowerなどを使ってみたところ、プログラムが動かなくなった。おかしいなと思い調べてみたところ、ちょっとしたことに気がついた。

lstrlenにはNULLを渡しても大丈夫だが、strlenにNULLを渡すと動かない。

そんなの当たり前だと言われるかもしれないが、何も考えずにlstrlenを使っていたので今までNULLを渡しても問題ないと思っていた。strlenにはNULLを渡してはいけない。だから_tcslenに変えると、_tcslen(NULL)となったところでプログラムが動かなくなってしまう。

NULLはきちんとチェックしてから長さを調べることにするように(自戒)。