Выделить память и сохранить строку в c

мне стало интересно, почему следующий код не работает

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);
}
22
задан pluckyDuck 22 December 2011 в 06:30
поделиться