На сколько я понял при объявление статического массива int arr[n] arr по факту является указателем, и вообще эта конструкция равносильна int* arr = new arr[n]
то есть, что там что там можно сделать обращение через "*" и arr[n]
почему же, в первом случае говорят, что происходит статическое выделение памяти, а во втором динамическое?
Наглядный пример, почему С++ весьма не очень в качестве первого ЯП ) вместо изучения алгоритмов, структур данных, человек упирается в детали реализации языка, которые ему на данном этапе не нужны
LeEnot: по своей натуре, мне не дает покоя, если я не понимаю как оно работает, хотя бы в общих чертах, тупо заучить и смирится, что это так я не могу.
В первом случае идет выделение памяти на стеке, т.е. просто меняется значение регистра ESP.
Размер этой памяти ограничен значением указанным при инициализации потока, по умолчанию 1 Мб.
Во втором, вы получаете указатель на динамически выделенную память. В этом случае вы можете выделить значительно больше памяти. Ограничение только на разрядность системы.
lem_prod: Вся работа процессора идет с использованием регистров. А операционная система сохраняет значения регистров для каждого потока при переключении с одного на другой. Так что смело можно говорить, что регистр ESP относится к потоку.
Петр: такой вопрос, про стек, есть стек в ОП и стек на кристале процессора? верно? тогда как я понял регистр ESP хранит указатель стека в ОП, а где хранится указатель стека процессора? если он есть...