当在C中为字符串动态分配内存时,你计算字符串char的\ 0结尾吗?当在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?
让我们看看......你打算存储那个空终止符? – 2012-03-08 00:47:51
我读了标题,而不是正文。答案是肯定的。分配长度加1个字符。 – asveikau 2012-03-08 00:51:57
@ K-ballo如果我没有存储该空终止符,C stdlib字符串处理函数不知道该字符串结束的位置吗?如果最后一个有效char位置后面的内存字节没有被设置为\ 0,那么C字符串处理器会一直持续到第一个\ 0。如果我们没有设置并存储它,我们不能保证最后一个字符后面的字节是\ 0。 – 2012-03-08 02:53:33