c - 在C中为字符串动态分配内存时,是否计算字符串char的\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?

最佳答案

  1. 不要将 malloc()calloc()(或 realloc())的返回值强制转换为C 程序。
  2. 是的,您需要有 +1
  3. 如果您只想立即复制到其中,为什么还要费心使用 calloc() 将整个字符串置零?对我来说似乎是在浪费周期。

关于c - 在C中为字符串动态分配内存时,是否计算字符串char的\0结尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9611422/

相关文章:

Java String 删除所有非数字字符但保留小数分隔符

c - 为 FreeRTOS 中的线程安全重新定义 malloc

c - 使用 scanf 的二维数组中的段错误

c - map exe反编译回C语言

c - 在外部结构初始化中反射(reflect)内部结构

C 编程 : seg faults, printf 和相关问题

c - 为什么这个字符串反转 C 代码会导致段错误?

swift - 结合 map 和 split

c - C 代码段错误 : Return value

Python将文本拆分为列表