мне стало интересно, почему следующий код не работает
int main(int argc, char **argv)
{
char *test = (char*) malloc(12*sizeof(char));
test = "testingonly";
free(test);
}
Подумав об этом, я предположил, что сначала я выделяю место для 12 символов в памяти, но назначение в следующей строке создает массив символов в стеке, и адрес его памяти передается на проверку. Поэтому free () пытается освободить место в стеке, что недопустимо. Это правильно?
Итак, каков был бы правильный подход к сохранению строки в куче? Распространен ли следующий способ?
int main(int argc, char **argv)
{
char *test = (char*) malloc(12*sizeof(char));
strcpy(test, "testingonly");
free(test);
}