User:Igor.rastvorov

Сегмент данных - это часть виртуально-адресованного пространства программы, которая содержит глобальные переменные/объекты и статические переменные/объекты. Размер данного сегмента определяется значениями, помещенными в эту область памяти еще до компиляции. Стоит отметить, что размер не изменяется на протяжении всего времени выполнения программы.

Сегмент данных - это область памяти считается областью прочесть/записать (read/write), только если значения переменных могут изменяться на протяжении времени выполнения программы.

Память
Компьютерная память разделена на следующие составляющие:
 * Сегмент данных (данные + "куча" (структура данных, которая реализует интерфейс "контейнера" для динамически распределяемых объектов/переменных))


 * Стэк (структура данных, хранящая локальные пременные)


 * Сегмент кода (часть программы, хранящая исполняемые инструкции для целевого процессора)

Данные
Область данных содержит глобальные и статические переменные. Данную область памяти, в дальнейшем, можно классифицировать на read-only и read-write области. Например, следующая инструкция  указывает компилятору о том, что объект strObject должен быть размещен в сегменте данных (область read-write). А такая инструкция  известит компилятор о том, что данный объект будет размещен в сегменте данных (область read-only).

Куча
Куча является структурой данных, с помощью которой реализована динамически распределяемая память программы. Для управления данной структурой данных предоставлются операции malloc, realloс, и free. Например, следующая инструкция  укажет компилятору о том, что нужно выделить 4 байта памяти в "куче" и поместить адрес данной области памяти в указатель pString.

Стэк
Стэк является структурой данных, добавление и удаление элементов в которой реализовано по принципу LIFO (последним пришел, первым вышел), которая хранит локальные (auto) переменные. Размер стэка определяется количеством переменных/объектов, хранящихся в нем. Размер может варьироваться.