0

C で文字列にメモリを動的に割り当てるとき、文字列 char の \0 の終わりを数えますか?

char *copyInto, *copyFrom="test";

// Should 
copyInto = (char*)malloc(strlen(copyFrom));
// suffice?

// or should this be the following?
copyInto = (char*)malloc(strlen(copyFrom)+1);

// assuming you want to copy the string from copyFrom into copyInto
strcpy(copyInto,copyFrom);

// Does anyone recommend just \0-ing the whole copyInto as in
copyInto = (char*)calloc(strlen(copyFrom)+1);
// and if so, should it still be (strlen(copyFrom)+1) size?
4

1 に答える 1

6
  1. malloc()orcalloc()の戻り値をrealloc()C プログラムでキャストしないでください。
  2. はい、必要です+1
  3. すぐに文字列にコピーするだけなのに、わざわざcalloc()文字列全体をゼロにする必要があるでしょうか。私にはサイクルの無駄のように思えます。
于 2012-03-08T00:47:40.670 に答える