gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 05:44:25 24 4
gpt4 key购买 nike

在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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com