Часть полного текста документа:Динамическое распределение памяти Курсовая работа по дисциплине основы алгоритмизации и программирования студента Золин А.С.     Министерство высшего и профессионального образования РФ     Уральский государственный технический университет     Радиотехнический факультет     Кафедра "Автоматика и информационные технологии"     Екатеринбург 2000 Введение     Целью работы является демонстрация работы с динамической памятью на примере программ разработанных к заданиям 2, 6, 8, 10, 12, 14, 16 из методического указания [1].     Динамическое распределение памяти предоставляет программисту большие возможности при обращении к ресурсам памяти в процессе выполнения программы, и корректная работа программы с динамической памятью в существенной степени зависит от знания функций для работы с ней. Руководство пользователя     Задание №2     Для того чтобы убедиться что для каждого из однобайтовых данных в куче выделено 16 байт т.е. 1 параграф нужно сравнить три адреса, которые появяться на экран в рез-те действия этой программы. Если числа в этих адресах стоящие до двоеточия увеличиваютя (от первого к последнему) на еденичку, то это означает что на каждый блок выделен один параграф в куче = 16 байт. Для получения этих адресов в отладчике достаточно нажать Alt+F4 (в режиме отладчика) затем в появившемся запросе ввести *x появится меню, вверху которого и будет нужный адрес, аналогично для *y, *z.     Задание №6     Программа выделяет память под 20 переменных типа int, заполняет их случайными числами из интервала [-3;7] и выводит их на экран.     Задание №8     Программа хранит матрицы в виде двух структур:       Struct Matr1{int m, n; int *ptr};      Struct Matr2{int m, n; int **ptr};     И выделяет память под них с помощью следующих функций:      Int DinMatr1(Matr1 *matr);      Int DinMatr2(Matr2 *matr);     Задание №10     Программа получает с клавиатуры натуральные числа, сохраняя их в куче, конец ввода - число 0. По окончании ввода числа выводятся на экран.     Задание №12     Программа вычисляет октоэдрическую норму матрицы произвольных размеров.     Задание №14     Программа вычисляет общий размер свободной кучи.     Задание №16     Программа выполняет считывание матрицы произвольных размеров из файла (разделителями являются пробелы), вывод этой матрицы на экран, а также запись в файл. Руководство программиста     В этом разделе будут приведены листинги программ с комментариями.     Задание №2     #include      #include      #include      int main(void)      {      char *x,*y,*z; //Объявление переменных     x=(char *)malloc(sizeof(char)); //Выделение динамической памяти для *x      y=(char *)malloc(sizeof(char)); // --//-- *y      z=(char *)malloc(sizeof(char)); // --//-- *z      clrscr(); // Очистка экрана     printf("Adress of *x=%p\n",x); // Вывод на экран адреса начала блока для *x      printf("Adress of *y=%p\n",y); // --//-- *y      printf("Adress of *z=%p\n",z); // --//-- *z      free (z); // Освобождение блока выделенного для *z     free (y); // --//-- *y      free (x); // --//-- *x     /*     Для того чтобы убедиться что для каждого из однобайтовых данных в куче     выделено 16 байт т.е.  ............   |