在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?
最佳答案
- 不要将
malloc()
或calloc()
(或realloc()
)的返回值强制转换为C 程序。 - 是的,您需要有
+1
。 - 如果您只想立即复制到其中,为什么还要费心使用
calloc()
将整个字符串置零?对我来说似乎是在浪费周期。
关于c - 在C中为字符串动态分配内存时,是否计算字符串char的\0结尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9611422/