10/04/24 19:25:00
>351
生成と解放を対にしろってのは、基本方針としてもよいと思う。
よって、strdupのような関数は、できれば使いたくない派。
strdupは生成と解放の数が合わなくなる。
>392
>> 呼出元が生成と破棄を対にして行うのが良い
>良いのはわかります。つまり、それがstrdupや、>>351の(1)の場合ですよね。
これ逆だよね。strdupを使うとmallocが見えないのにfreeしなくちゃならない。
strdupは標準関数だからましだけど、func0, func2, func4が返すポインタは
freeしてね、とかだとやってられない。
やけにstrdupが「サイズを気にしなくてよい」ことがお気に入りのようだが、あくまでも実引数がCstringである場合だけ。
これは自動変数か、ヒープ領域か、静的変数かには無関係。
str系関数は、終端文字がある前提という制限がある。
呼び出し側が領域を用意する場合は、当然呼び出し側でサイズがわかっているはずなので、
そのときに無駄に領域を用意しなければよいだけでしょ。