Это может быть более глубокий вопрос, чем я ожидаю, но можете ли вы видеть, не указана ли указатель на символ? Например, строка, нераспределенные не NULL
, как видно из когда я побежал этот код:Проверьте, не была ли строка нераспределенной.
char *ptr; /* Unallocated char pointer */
if (ptr == NULL) {
ptr = malloc(10); /* Not casted cause it doesn't matter */
printf("ptr is allocated\n");
return(0);
}
printf("ptr is unallocated\n");
return(0);
Когда я запускал код, я получил сообщение ptr is unallocated
. Это имеет смысл, потому что строка не может иметь память для нулевого символа. Итак, есть ли способ увидеть, что строка нераспределена? Или я задаю неправильный вопрос?
Итак, если бы я передавал строки функциям, и мне нужно было бы инициализировать их до «NULL» во всех случаях? – trifork
Да, вы всегда должны инициализировать локальные переменные. В противном случае вы не можете делать какие-либо предположения о том, что они могут быть. –
@Trifork: да, если вы хотите, чтобы ваша программа вела себя правильно. –