Logo Спонсор сайта — Хостинг Fornex.com Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

хостинг сайтов ГиперХост — хостинг сайтов который Вы искали.

Виртуальный хостинг, Аренда VPS серверов, рация доменных имен, SSL сертификаты

Надежный хостинг сайтов и VPS на SSD с 2001 года.

Все включено: бесплатный конструктор сайтов, домены и SSL.

Супер партнерская программа. Заработай на хостинге!

Быстрые VDS SSD от 150руб/мес в России, Финляндии и США.

Дешевые VPS OpenVZ на SSD дисках.

Виртуальные сервера KVM VPS на SAS дисках от 99 руб/мес.

5.5.3. Размещение объектов в памяти

Объекты, определенные в программе на языке C могут размещаться в памяти программы (статические глобальные объекты), в стеке (автоматически размещаемые локальные объекты), или в куче (динамические объекты). Время жизни статических объектов - это все время выполнения программы. Они используются для хранения глобальных переменных и констант, но при объектно-ориентированной разработке программ стараются использовать как можно меньше глобальных объектов, так как они нарушают модульную структуру программы. Глобальные объекты в языке C объявляются на внешнем уровне программного файла, вне составляющих его функций; инициализация таких объектов обычно производится при их порождении во время компиляции программы. Пример объявления статического (глобального) объекта:


	static struct Window outer_window = {0.0, 0.0, 8.5, 11.0};

При вызове методов, использующих объявленную глобальную переменную, им следует передавать ее адрес (&outer_window).

Промежуточные временные данные обычно размещаются в стеке. Удобство использования таких данных в том, что они размещаются в памяти и удаляются из нее автоматически. При этом программист сам должен следить, чтобы при выходе из блока не оставалось бы указателей на автоматические объекты этого блока, являющихся значениями объектов (или их частей), которые остаются в памяти после выхода из блока. Объекты, живущие дольше функций, в которых они порождаются, не следует размещать в переменных, автоматически размещаемых в стеке; это может привести к изощренным ошибкам в программе, которые очень трудно обнаружить.

Динамически размещаемые объекты необходимо использовать, когда во время компиляции программы неизвестно их количество. Такие объекты размещаются в куче по запросу (функции malloc или сalloc) во время выполнения программы. Будучи размещенным в памяти динамический объект сохраняется в ней до тех пор, пока не будет явным образом отменен (функция free). Пример функции размещения и инициализации динамического объекта:


	struct Window* create_window(xmin, ymin, width, height);

	Length xmin, ymin, width, height;

	{

	struct Window* window;

	/*размещение объекта*/

	window = (struct Window*)malloc(sizeof(struct Window));

	/*инициализация объекта*/

	window-> xmin = xmin;

	window-> ymin = ymin;

	window-> xmax = xmin + width;

	window-> ymax = ymin + height;

	return window;

	};

Перед удалением динамического объекта с помощью функции free необходимо удостовериться, что не осталось указателей на этот объект.

Назад | Содержание | Вперед

Лучший защищенный DDos хостинг в России. От 390 руб/м.

VPN, прокси без блокировок РКН в Москве (KVM: 2 core, 1GB RAM, 30GB SSD). От 349 руб/м.

Скидка 50% на первый месяц, для новых клиентов. Промокод ARGOTEL-NEW

Новости мира IT:

Архив новостей

Последние комментарии:

Представлен релиз ядра Linux 5.0 (2)
Понедельник 11.03, 07:27

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 985 1945361
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2015 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...