1. ホーム
  2. c

[解決済み] strcpy'で作成した文字列は解放する必要がありますか?

2022-02-07 03:48:58

質問

で作成された文字列は、' strcpy は解放する必要があるのでしょうか?また、どのように解放するのですか?

編集部:宛先はこのように割り当てられています。

char* buffer[LEN];

解決方法は?

strcpy 自体は宛先の文字列のためにメモリを割り当てないので、解放する必要はありません。

もちろん、もし何か さもなくば がそのためにメモリを割り当てていた場合、そのメモリは最終的に解放されるべきですが、そのためには 何も とは関係ありません。 strcpy .

あなたの定義が文字の配列であるため、その前の文はそうであるように思われます。 ポインター は、文字の配列ではありません。

char* buffer[LEN];

となります。 ほとんど は確実に行われます。

buffer[n] = malloc (length);

mallocされたメモリに対する責任という観点から考え始めるとよいでしょう。つまり、mallocされたメモリブロックを渡すことは、ある時点でそれを解放する責任を渡すことを含むかもしれないのです。

メモリの管理責任がメモリそのものに付随しているのかどうかを把握すればよいのです(自分のコードであれば判断すればよい)。例えば strcpy の場合、転送先に既にマロクされたブロックを渡したとしても、その責任は ない を渡すので、自分でそのメモリを解放する必要があります。このため、malloc'されたバッファやmalloc'されていないバッファを気にすることなく、簡単に渡すことができます。

を思い浮かべるかもしれません。 strdup これは基本的に、最初にメモリを確保して文字列のコピーを作成するものです。そこから返された文字列は、間違いなく解放される必要があります。