куча против сегмента данных против распределения стека

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

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

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

Спасибо

15
задан Kiran 1 June 2011 в 16:52
поделиться