K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]

新規投稿 | 開設者ホームページへ戻る | ヘルプ

[2198] ポインタ完全制覇 - read_slogan.c
投稿者:Tom
2019/11/13 20:20:20

はじめまして、ポインタ完全制覇の四章の`read_slogan.c`での質問です。 buf[slogan_len - 1] = '\0'; したあと、 slogan[i] = malloc(sizeof(char) * (slogan_len + 1)); していますが、bufの大きさは、slogan_len byteで十分なので、mallocのときには、+1する必要はなくて、 slogan[i] = malloc(sizeof(char) * slogan_len); でよいのではないでしょうか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[2199] Re:ポインタ完全制覇 - read_slogan.c
投稿者:(ぱ)こと管理人
2019/11/16 02:04:54

はじめまして。ご指摘ありがとうございます。 >buf[slogan_len - 1] = '\0'; > >したあと、 > >slogan[i] = malloc(sizeof(char) * (slogan_len + 1)); > >していますが、bufの大きさは、slogan_len byteで十分なので、 通常、文字数がlenのとき、'\0'の分を含めてlen+1だけmalloc()するのが 定石ですが、このケースではslogan_lenは改行文字を含んでいて、 その改行文字を'\0'に置き換えるので、malloc()するのはslogan_lenの 分だけでよいですね。 改定前のものからのミスだと思います。正直、まだポカが残っているとは 思いませんでした…… 正誤表に入れさせていただきます。
[この投稿を含むスレッドを表示] [この投稿を削除]