будет в куче

трят на следующую программу и не уверен, как выделяется память и почему:

void function() {
    char text1[] = "SomeText";
    char* text2 = "Some Text";
    char *text = (char*) malloc(strlen("Some Text") + 1 );
}

В приведенном выше коде последний явно находится в куче. Однако, как я понимаю, text2 находится в сегменте данных программы, а text1 может быть в стеке. Или мое предположение неверно? Какое правильное предположение здесь? Зависит ли этот компилятор?

Спасибо

Ответы на вопрос(1)

Ваш ответ на вопрос