АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Процессы и адресное пространство

Читайте также:
  1. C.I Процессы с ключевых точек зрения
  2. L.3.1. Процессы переноса вещества и тепла.
  3. L.3.2. Процессы присоединения частиц. Механизмы роста.
  4. N-мерное векторное пространство действительных чисел. Задачи
  5. N-мерное векторное пространство действительных чисел. Компьютерная часть
  6. N-мерное векторное пространство действительных чисел. Математическая часть
  7. V1: Переходные процессы в линейных электрических цепях, методы анализа переходных процессов
  8. V1: Процессы в сложных электрических цепях, цепи с распределенными параметрами
  9. Абсолютное пространство и истинное движение
  10. АДАПТИВНЫЕ ПРОЦЕССЫ В СОЦИАЛЬНОЙ РАБОТЕ И МЕТОДИКА ИХ РЕГУЛИРОВАНИЯ
  11. Адресное пространство процесса в Windows 95/98
  12. Американские процессы

Лекция №2

Указатели и работа с памятью в С++

 

Понятие указателя

Любой объект программы, будь то переменная базового или же производного типа, занимает в памяти определенную область.

Местоположение объекта в памяти определяется его адресом. При объявлении переменной для нее резервируется место в памяти, размер которого зависит от типа данной переменной, а для доступа к содержимому объекта служит его имя (идентификатор). Для того чтобы узнать адрес конкретной переменной, служит унарная операция взятия адреса (&). Мощным средством разработчика программного обеспечения на С++ является возможность осуществления непосредственного доступа к памяти. Для этой цели предусматривается указатели.

В стандартизируемом варианте языка С++ предполагается, что все указатели одинаковы, т.е. внутреннее представление адресов всегда одно и тоже. Однако, практически все компиляторы языка С учитывают архитектуру процессора и включают дополнительные возможности для ее эффективного использования.

Основная память ЭВМ - это память с произвольным доступом. К каждому элементу которого можно обратиться по средством сегментированного адреса. Любые два смежных байта образуют 16-тиразрядное слово. Адресом слова является младший из адресов байтов. Понятие слово относительно, т.к. один и тот же байт может входить в два смежных слова.

В общем случае оперативная память, с которой работает программа, подразделяется на три вида: статическую, автоматическую и динамическую.

Статическая память — это область памяти, выделяемая при запуске программы до вызова функции main из свободной оперативной памяти для размещения глобальных и статических объектов, а также объектов, определённых в пространствах имён.

Автоматическая память — это специальный регион памяти, резервируемый при запуске программы до вызова функции main из свободной оперативной памяти и используемый в дальнейшем для размещения локальных объектов: объектов, определяемых в теле функций и получаемых функциями через параметры в момент вызова. Автоматическую память часто называют стеком.

Динамическая память — это совокупность блоков памяти, выделяемых из доступной свободной оперативной памяти непосредственно во время выполнения программы под размещение конкретных объектов.

Процессы и адресное пространство

Прежде чем изучать управление памятью в Windows, надо понять, что такое процесс (process). Программа — это ЕХЕ-файл, который можно запустить из Windows. После запуска программа называется процессом. У процесса есть собственные память, описатели файлов и другие системные ресурсы. Запустив две копии одной программы, вы получите два отдельных процесса.

Важно знать, что процессу выделяется свое частное 4-гигабайтное виртуальное адресное пространство, Программа может обращаться к любому байту этого адресного пространства, используя один-единственный 32-разрядный линейный адрес. При этом в адресном пространстве каждого процесса содержится масса самых разных элементов:

•образ ЕХЕ-файла программы;

•все несистемные DLL, загруженные вашей программой;

•глобальные данные программы (как доступные для чтения и записи, так и предназначенные только для чтения);

•стек программы;

•динамически выделяемая память, в том числе куча Windows и куча библиотеки С периода выполнения (С runtime library, CRT);

• файлы, спроецированные в память;

• блоки памяти, совместно используемые несколькими процессами;

• локальная память отдельных выполняемых потоков;

• всевозможные особые системные блоки памяти, в том числе таблицы виртуальной памяти;

• ядро, исполнительная система и DLL-компоненты Windows,


1 | 2 | 3 | 4 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.)