在 C 中为字符串动态分配内存时,是否计算字符串字符的 0 结尾



在 C 中为字符串动态分配内存时,是否计算字符串字符的 \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 -ing the whole copyInto as in
copyInto = (char*)calloc(strlen(copyFrom)+1);
// and if so, should it still be (strlen(copyFrom)+1) size?
  1. 不要在 C 程序中强制转换 malloc()calloc()(或与此相关的realloc()(的返回值。
  2. 是的,您需要拥有+1.
  3. 如果您只是要立即复制到字符串中,为什么要费心使用 calloc() 将整个字符串归零? 对我来说似乎是浪费周期。

最新更新