Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по технологиям программирования.pdf
Скачиваний:
53
Добавлен:
02.06.2015
Размер:
4.73 Mб
Скачать

Утечки памяти

#define _CRTDBG_MAP_ALLOC #include <stdlib.h>

#include <crtdbg.h> /* _DEBUG

_CrtDumpMemoryLeaks();

_CrtMemStates1; _CrtMemCheckpoint( &s1 ); _CrtMemDumpStatistics( &s1 );

Процесс сборки мусора

Этап маркировки, выполняющий поиск всех используемыхобъектов и составляющий их перечень.

Этап перемещения, обновляющий ссылки на сжимаемые объекты.

Этапсжатия, освобождающий пространство, занятое неиспользуемыми объектами и сжимающий выжившие объекты (объекты, которые неуничтожаются при сборке мусора).

Сборка мусора. Поколения объектов

Поколение 0. Этосамое молодоепоколениесодержит короткоживущиеобъекты. Примером короткоживущегообъекта является временная переменная. Сборка мусорачаще всего выполняетсяв этом поколении.

Поколение 1. Это поколениесодержиткороткоживущиеобъекты и служит буфером между короткоживущимии долгоживущими объектами.

Поколение 2. Этопоколениесодержитдолгоживущие объекты. Примеромдолгоживущихобъектов служитобъектв серверном приложении,содержащий статическиеданные, которыесуществуют в течениедлительностипроцесса.

1.# include «имя_файла«

#include <имя_файла>

#include macro__identifier

2.# define имя-макро <тело-макро>

#define имя-макро (аргументы)<тело-макро>

#undef имя-макро

Пример:

# define Pi 3.1456

#define Min(a,b) ((a)<(b)) ? (a) : (b) int main ()

{ intx=10*Pi; inty=12; cout<< Min(x,y); return 0;}

Ошибки:

#define P=3.145 #define Mul(a,b) a * b

c=Mul(x+3, y+2); //c = x+3y+2

3. #ifdef идентификатор1

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

#elif идентификатор2

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

#else

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

#endif

Пример:

#ifdef _FLAT

#include <win32\windowsx.h>

#else

#include <winl6\windowsx.h>

#endif 4. #аргумент

строка##аргумент Пример:

#define stroka(x) printf(#x "\n") stroka( Данныена экран );

#define session(x) printf(“номерсесии: %d \n", data##x) session(2);

5.#error сообщение

Пример:

#if !defined(MYNAME)

#error Не определена константа MYNAME #endif

6. #pragma имя-прагмы

Пример:

#pragmastartupимя_функции <приоритет> #pragmaexit имя_функции <приоритет >