Лаб. работа “Работа с динамической памятью”
Системное программирование
Практика
Цель лабораторной работы
Создание приложения с использованием WinAPI, в котором будет использоваться динамическая память.
Задание
- Изучить теорию по теме Управление памятью
- Создать приложение на языке C или C++
- Работа с динамической памятью:
- Выполнить задание №1 согласно варианта с использованием различных способов выделения и освобождения динамической памяти:
- Использование
malloc
,realloc
,free
- Использование
new
,delete
(только на C++) - Использование
VirtualAlloc
,VirtualFree
- Использование
HeapAlloc
,HeapFree
- Использование
- Выполнить задание №2 согласно варианта с использованием пользовательской кучи (функции
HeapCreate
,HeapAlloc
,HeapReAlloc
,HeapFree
,HeapDestroy
)
- Выполнить задание №1 согласно варианта с использованием различных способов выделения и освобождения динамической памяти:
Варианты заданий
Задание №1
- Создать динамический массив. Размер вводится пользователем. Заполнить массив случайными числами. Вывести на экран содержимое массива и сумму чисел в массиве. Прибавить сумму чисел к каждому элементу массива, вывести массив на экран. Освободить память.
- Создать динамический массив. Размер вводится пользователем. Заполнить массив случайными числами. Вывести на экран содержимое массива и среднее значение чисел в массиве. Прибавить среднее значение к каждому элементу массива, вывести массив на экран. Освободить память.
- Создать динамический массив. Размер вводится пользователем. Заполнить массив случайными числами. Вывести на экран содержимое массива и максимальное число в массиве. Прибавить максимальное значение к каждому элементу массива, вывести массив на экран. Освободить память.
- Создать динамический массив. Размер вводится пользователем. Заполнить массив случайными числами. Вывести на экран содержимое массива и минимальное число в массиве. Прибавить минимальное значение к каждому элементу массива, вывести массив на экран. Освободить память.
- Создать динамический массив. Размер вводится пользователем. Заполнить массив случайными числами. Вывести на экран содержимое массива и количество четных чисел в массиве. Прибавить это количество к каждому элементу массива, вывести массив на экран. Освободить память.
- Создать динамический массив. Размер вводится пользователем. Заполнить массив случайными числами. Вывести на экран содержимое массива и количество нечетных чисел в массиве. Прибавить это количество к каждому элементу массива, вывести массив на экран. Освободить память.
- Создать динамический массив. Размер вводится пользователем. Заполнить массив случайными числами. Вывести на экран исходное содержимое массива и отсортированное по возрастанию содержимое. Освободить память.
- Создать динамический массив. Размер вводится пользователем. Заполнить массив случайными числами. Вывести на экран исходное содержимое массива и отсортированное по убыванию содержимое. Освободить память.
- Создать динамический массив. Размер вводится пользователем. Заполнить массив случайными числами. Вывести на экран исходное содержимое массива, переставить числа в массиве в обратном порядке и вывести на экран. Освободить память.
- Создать динамический массив. Размер вводится пользователем. Заполнить массив элементами ряда Фибоначчи. Вывести на экран исходное содержимое массива, переставить числа в массиве в обратном порядке и вывести на экран. Освободить память.
Задание №2
Создать пользовательскую кучу. Создать динамический массив из указателей. Размер вводится пользователем. Для каждого элемента массива выделить память по отдельности из пользовательской кучи. Указатели на созданные элементы сохранить в массиве. Выполнить задание с этим массивом согласно варианта задания № 1. В конце освободить память, уничтожив пользовательскую кучу.