где функция-член класса получает свою память?
Является ли стек фрейм ответом на это?
И распределяется ли он всякий раз, когда мы вызываем функцию-член?
Это как всякий раз, когда мы вызываем функцию-член, используя объект, он выделяется в кадре стека, а когда функция достигает его, возвращает оператор, что выделенный кадр стека освобождается?
где функция-член класса получает свою память?
Выделение памяти для данных функции определяется реализацией.
Является ли стековый фрейм ответом на это?
Для реализации C ++ не требуется использовать структуру стека.
Структура стека для локальных переменных удобна, но не обязательна.
И распределяется ли он всякий раз, когда мы вызываем функцию-член?
Функция локальных переменных может создаются, когда исполнение входит в функцию. Не требуется, чтобы реализация создавала переменные. Переменные могут существовать в глобальной памяти и инициализироваться, когда выполнение входит в функцию.
Это как всякий раз, когда мы вызываем функцию-член, используя объект, он выделяется в кадре стека, а когда функция достигает его, возвращает оператор, что выделенный кадр стека освобождается?
Популярной реализацией является выделение места в стеке для локальных переменных. Распределение пространства будет включать в себя увеличение или уменьшение указателя стека.
Когда выполнение выходит из области видимости, стек корректируется соответствующим образом.
Реализация разрешено использовать регистры, поэтому существует вероятность того, что память не будет выделена и стек не будет изменен. Реализация может помещать регистры в стек перед выполнением функции и извлекать их впоследствии.
Ответы на ваши вопросы определены реализацией. Небольшие встроенные системы могут использовать больше регистров или глобальной памяти, чем стек. Существует много возможных структур данных, которые можно использовать и при этом соответствовать стандарту языка C ++.
Других решений пока нет …