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. 不要在 C 程序中转换malloc()or calloc()(或realloc()就此而言)的返回值。
  2. 是的,您需要拥有+1.
  3. calloc()如果您只是要立即复制到其中,为什么还要费心将整个字符串归零呢?对我来说似乎是在浪费周期。
于 2012-03-08T00:47:40.670 回答