Я читаю «Принципы и практика программирования с использованием C ++» Б.Струструпа и пытаюсь выполнить большинство упражнений. Это очень интересно, и я понятия не имею, с чего начать.
Упражнение это:
Рассмотрим макет в 17.4. Напишите программу, которая сообщает порядок, в котором статическое хранилище, стек и свободное хранилище располагаются в памяти. В каком направлении растет стек: вверх к старшим адресам или вниз к младшим?
Макет в 17.4:
Код — память для кода
Статические данные — пространство для глобальных переменных
Свободный магазин — доступная память
Стек — память для вызова функций и пространство для их аргументов и локальных переменных
Как я могу на самом деле знать, в каком порядке это все происходит? А еще лучше, как я мог на самом деле вывести заказ в том, что это происходит в то время, когда это происходит?
Разве это не должно быть обработано компилятором или, может быть, я просто неправильно понял упражнение? Несколько советов было бы действительно здорово!
Спасибо
Разве это не должно быть обработано компилятором
линкер, конкретнее.
Вот отправная точка, делающая именно то, что предлагает Джозеф Мэнсфилд.
#include <iostream>
int static_data;
int main()
{
int stack_data;
if ( &static_data < &stack_data )
{
std::cout << "Static data is in lower memory than the stack.";
}
}