- •Структура платформы .NET
- •Схема выполнения программы в .NET
- •Схема работы компиляторов .NET
- •Достоинства языка С++
- •Структура программы
- •Модификаторы памяти
- •Пространство имен
- •Константы
- •Описание идентификаторов
- •Операции С++
- •Правила преобразования типов
- •Функции
- •ПЕРЕГРУЗКА ФУНКЦИЙ
- •Неоднозначность перегрузки
- •Шаблоны функций
- •Явная спецификация типов
- •Оперативная память
- •В адресном пространстве каждого процесса содержится:
- •Виртуальная память может находиться в трех состояниях
- •Средства защиты памяти
- •Страничное преобразование
- •ПРИМЕР РАБОТЫ С УКАЗАТЕЛЯМИ
- •Еще один пример с указателями
- •Утечки памяти
- •Процесс сборки мусора
- •Сборка мусора. Поколения объектов
- •Особенности ОС Windows
- •Процесс и поток
- •Очереди сообщений
- •Структура сообщения
- •Cпособы создания интерактивных Win приложений в VS C++
- •Функция WinMain
- •Создание окна
- •Функция окна
- •Цикл обработки сообщения
- •Определение запущенной копии приложения
- •Пример приложения
- •Команды передачи данных
- •Арифметические команды:
- •Каркас программы
- •Стековый фрейм
- •Парадигмы программирования
- •Элементы объектной модели
- •Преимущества объектной модели
- •Ограничения доступа
- •Спецификатор памяти static
- •Спецификатор const
- •Указатель this
- •Дружественные функции
- •Основные свойства и правила использования спецификатора friend:
- •Наследование
- •Основные правила использования базовых и производных классов:
- •Наследование атрибутов компонентов базового класса:
- •Множественное наследование
- •Использование виртуального класса
- •Полиморфизм
- •ПРОЦЕСС
- •Структура процесса
- •Поток (thread)
- •Создание и работа с потоками
- •Создание потока
- •Завершение потока
- •Совместимость потоков и стандартной библиотеки
- •Синхронизация потоков ПРИМЕР1
- •Как можно приостановить работу потока?
- •ПРИМЕР 2
- •Объекты синхронизации
- •Мьютекс. ПРИМЕР3
- •Критические секции ПРИМЕР4
- •События. ПРИМЕР5
- •Семафоры. ПРИМЕР6
- •Структура описания технологической операции
- •Типы программ
- •Жизненный цикл программного обеспечения
- •Структура процессов ЖЦПО
- •Стратегии конструирования ПО
- •Водопадная модель ЖЦПО
- •Макетирование
- •Спиральная модель БОЭМА
- •Инкрементальная модель
- •Модель быстрой разработки приложений (RAD)
- •Схема процесса XP.
- •Эксплуатационные требования к программным продуктам
Утечки памяти
#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 имя_функции <приоритет >