При динамическом назначении памяти в C для строк, считаете ли вы конец \0 строки char?
При динамическом назначении памяти в C для строк, считаете ли вы конец \0 строки char?
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()
в этом отношении) в программе на Си. - Да, вам нужно иметь
+1
, - Зачем использовать
calloc()
обнулить всю строку, если вы собираетесь сразу скопировать в нее? Похоже, трата циклов для меня.