Если указатель был выделен да. Вы получите предупреждение, но оно уже есть, когда вы его распределили.
Я часто использую const char *
в своих структурах, когда хочу убедиться, что никто не пишет в них между распределением и выпуском. Часто случается, что вы динамически создаете строку, которая является неизменной на весь срок службы, и если вы вызываете ее с функцией с побочными эффектами (strtok
), вы можете столкнуться с проблемами. Объявляя это const
, вы можете по крайней мере получить предупреждение в этом случае.
const char *msg;
asprintf((char *)&msg, "whatever" ...);
...
strtok(msg, ","); // Will generate a warning
...
free((char*)msg);