Я смотрю на следующую программу и не уверен, как выделяется память и почему:
void function() {
char text1[] = "SomeText";
char* text2 = "Some Text";
char *text = (char*) malloc(strlen("Some Text") + 1 );
}
В приведенном выше коде последняя явно находится в куче. Однако, насколько я понимаю, text2 находится в сегменте данных программы, а text1 может быть в стеке. Или мое предположение неверно? Какое здесь предположение правильное? Зависит ли этот компилятор?
Спасибо