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