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

0 c string malloc calloc

在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?
Run Code Online (Sandbox Code Playgroud)

Car*_*rum 6

  1. 不要在C程序中转换malloc()calloc()(或者realloc()就此而言)的返回值.
  2. 是的,你需要拥有+1.
  3. calloc()如果你要立即复制它,为什么还要用来将整个字符串归零?对我来说似乎浪费了周期.