Упражнение на макет памяти Stack Overflow

Я читаю «Принципы и практика программирования с использованием C ++» Б.Струструпа и пытаюсь выполнить большинство упражнений. Это очень интересно, и я понятия не имею, с чего начать.

Упражнение это:

Рассмотрим макет в 17.4. Напишите программу, которая сообщает порядок, в котором статическое хранилище, стек и свободное хранилище располагаются в памяти. В каком направлении растет стек: вверх к старшим адресам или вниз к младшим?

Макет в 17.4:

Код — память для кода

Статические данные — пространство для глобальных переменных

Свободный магазин — доступная память

Стек — память для вызова функций и пространство для их аргументов и локальных переменных

Как я могу на самом деле знать, в каком порядке это все происходит? А еще лучше, как я мог на самом деле вывести заказ в том, что это происходит в то время, когда это происходит?

Разве это не должно быть обработано компилятором или, может быть, я просто неправильно понял упражнение? Несколько советов было бы действительно здорово!

Спасибо

2

Решение

Разве это не должно быть обработано компилятором

линкер, конкретнее.

Вот отправная точка, делающая именно то, что предлагает Джозеф Мэнсфилд.

#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.";
}
}
1

Другие решения


По вопросам рекламы [email protected]