Реферат: Динамическое распределение памяти

Реферат: Динамическое распределение памяти




⚡ 👉🏻👉🏻👉🏻 ИНФОРМАЦИЯ ДОСТУПНА ЗДЕСЬ ЖМИТЕ 👈🏻👈🏻👈🏻




























































Курсовая работа по дисциплине основы алгоритмизации и программирования студента Золин А.С.

Министерство высшего и профессионального образования РФ

Уральский государственный технический университет

Кафедра “Автоматика и информационные технологии”

Целью работы является демонстрация работы с динамической памятью на примере программ разработанных к заданиям 2, 6, 8, 10, 12, 14, 16 из методического указания [1].
Динамическое распределение памяти предоставляет программисту большие возможности при обращении к ресурсам памяти в процессе выполнения программы, и корректная работа программы с динамической памятью в существенной степени зависит от знания функций для работы с ней.
Для того чтобы убедиться что для каждого из однобайтовых данных в куче выделено 16 байт т.е. 1 параграф нужно сравнить три адреса, которые появяться на экран в рез-те действия этой программы. Если числа в этих адресах стоящие до двоеточия увеличиваютя (от первого к последнему) на еденичку, то это означает что на каждый блок выделен один параграф в куче = 16 байт. Для получения этих адресов в отладчике достаточно нажать Alt+F4 (в режиме отладчика) затем в появившемся запросе ввести *x появится меню, вверху которого и будет нужный адрес, аналогично для *y, *z.
Программа выделяет память под 20 переменных типа int, заполняет их случайными числами из интервала [-3;7] и выводит их на экран.
Программа хранит матрицы в виде двух структур:
И выделяет память под них с помощью следующих функций:
Программа получает с клавиатуры натуральные числа, сохраняя их в куче, конец ввода – число 0. По окончании ввода числа выводятся на экран.
Программа вычисляет октоэдрическую норму матрицы произвольных размеров.
Программа вычисляет общий размер свободной кучи.
Программа выполняет считывание матрицы произвольных размеров из файла (разделителями являются пробелы), вывод этой матрицы на экран, а также запись в файл.
В этом разделе будут приведены листинги программ с комментариями.
char *x,*y,*z; //Объявление переменных
x=(char *)malloc(sizeof(char)); //Выделение динамической памяти для *x
y=(char *)malloc(sizeof(char)); // --//-- *y
z=(char *)malloc(sizeof(char)); // --//-- *z
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
Для того чтобы убедиться что для каждого из однобайтовых данных в куче
выделено 16 байт т.е. 1 параграф нужно сравнить три адреса, которые поя-
вяться на экран в рез-те действия этой программы. Если числа в этих адресах
стоящие до двоеточия увеличиваютя (от первого к последнему) на еденичку, то
это означает что на каждый блок выделен один параграф в куче = 16 байт.
Для получения этих адресов в отладчике достаточно нажать Alt+F4 (в режиме
отладчика) затем в появившемся запросе ввести *x появится меню, вверху
которого и будет нужный адрес, аналогично для *y, *z.
//Инициализация генератора случ. чисел
if (!(mas=(int *)malloc(sizeof(int )*N_var)))
printf ("Не достаточно памяти для выделения массива\n");
//Заполнение массива случ. числами в диапазоне от -3 до 7 с одновременным
//Освобождение памяти из под масси ва
//Структура Matr1, которая содержит размеры матрицы, а также одномерный
//массив элементов матрицы и функцию для задания размеров матрицы
//Структура Matr1, которая содержит размеры матрицы, а также двумерный
//массив элементов матрицы и функцию для задания размеров матрицы
int DinMatr1 (Matr1 *matr); //функциявыделенияпамятидля Matr1
int DinMatr2 (Matr2 *matr); //функция выделения памяти для Matr2
void FreeMatr1(Matr1 *matr); //функция освобождения памяти из под Matr1
void FreeMatr2(Matr2 *matr); //функция освобождения памяти из под Matr2
Matr1 M1; //Создание экземпляра Matr1
Matr2 M2; //Создание экземпляра Matr2
M1.SetRazm(2,2); //Задание размеров Matr1
if (!DinMatr1(&M1)) //Выделение памяти для Matr1
printf("Не хватает памяти под M1\n");
printf("Не хватает памяти под M2\n");
FreeMatr1 (&M1); //Освобождение памяти из под Matr1
if (!((matr->ptr)=(int *)malloc(sizeof(int)*(matr->m)*(matr->n)))) return 0;
if (!(matr->ptr=(int **)malloc(sizeof(int *)*(matr->m)))) return 0;
if (!(matr->ptr[i]=(int *)malloc(sizeof(int)*(matr->n)))) return 0;
if (matr->ptr[i]) free(matr->ptr[i]);
mas=(char **)malloc(sizeof(char *)); //Выделение памяти под первое число
mas[0]=(char *)malloc(sizeof(char)); //Выделение памяти под первую позицию //цифры в числе
while ((c=getch())-'0') //Пока не ввели 0
if (c==13) //При нажатии Enter выделение памяти
if (!(mas=(char **)realloc(mas,sizeof(char *)*(m+1))))
putch(10); //Перевод карретки и перевод строки
if ((c<'0')||(c>'9')) continue; //Проверка на ввод только цифр
if ((!n)&&(m)) //Выделение памяти под первую позицию
if(!(mas[m]=(char *)malloc(sizeof(char)) ))
mas[m][n]=c; //Занесение цифры на нужную позицию
if (n) //Выделение памяти под следующую
if (!(mas[m]=(char *)realloc(mas[m],sizeof(char)*(n+1))))
for (int i=0;iptr=(double **)malloc(sizeof(double *)*(matr->m)))) return 0;
if (!(matr->ptr[i]=(double *)malloc(sizeof(double)*(matr->n)))) return 0;
if (matr->ptr[i]) free(matr->ptr[i]);
void Setelem(Matr *matr,double M[3][3])
for (int j=0;jn;j++) (matr->ptr[i][j])=M[i][j];
A=(char *)calloc(N,1024); //Выделение в куче места
A=(char *)calloc(N,1024); //Выделение памяти под больший массив
while(A!=NULL); //Продолжать пока память выделяется
printf("\nMaximum size of heap N=%iKb",N);//Выводрезультатов
if (!(pf=fopen(name,"rt"))) return 0;
ptr=(double **)malloc(sizeof(double *));
ptr[0]=(double *)malloc(sizeof(double));
if (((c>='0')&&(c<='9'))||(c=='.'))
ptr[i]=(double *)realloc(ptr[i],sizeof(double)*(j+1));
ptr=(double **)realloc(ptr,sizeof(double *)*(i+1));
ptr[i]=(double *)malloc(sizeof(double));
for(int i=0;i<=n;i++) free(ptr[i]);
if (!(pf=fopen(name,"wt"))) return 0;
Трофимов С.П. Программирование в Си. Динамическое распределение памяти:
Метод. указания. Екатеринбург: изд-во УГТУ, 1998.
Трофимов С.П. Программирование в Си. Организация ввода-вывода:
Метод. указания. Екатеринбург: изд-во УГТУ, 1998.
Хинт К. Си без проблем. Руководство пользователя. М.: Бином, 1997.

Название: Динамическое распределение памяти
Раздел: Рефераты по информатике, программированию
Тип: реферат
Добавлен 02:49:07 27 февраля 2008 Похожие работы
Просмотров: 58
Комментариев: 21
Оценило: 2 человек
Средний балл: 5
Оценка: неизвестно   Скачать

Срочная помощь учащимся в написании различных работ. Бесплатные корректировки! Круглосуточная поддержка! Узнай стоимость твоей работы на сайте 64362.ru
Если Вам нужна помощь с учебными работами, ну или будет нужна в будущем (курсовая, дипломная, отчет по практике, контрольная, РГР, решение задач, онлайн-помощь на экзамене или "любая другая" учебная работа...) - обращайтесь: https://clck.ru/P8YFs - (просто скопируйте этот адрес и вставьте в браузер) Сделаем все качественно и в самые короткие сроки + бесплатные доработки до самой сдачи/защиты! Предоставим все необходимые гарантии.
Привет студентам) если возникают трудности с любой работой (от реферата и контрольных до диплома), можете обратиться на FAST-REFERAT.RU , я там обычно заказываю, все качественно и в срок) в любом случае попробуйте, за спрос денег не берут)
Да, но только в случае крайней необходимости.

Реферат: Динамическое распределение памяти
Реферат: Религиозные идеи романа "Мастер и Маргарита" М. Булгакова и романа Л. Леонова "Пирамида. Скачать бесплатно и без регистрации
Курсовая работа по теме Совет Федерации РФ
Биболетова 6 Класс Контрольные Работы
Лабораторная Работа 5 По Биологии 9
Курсовые Красноярск
Переходные Процессы В Электроэнергетических Системах Курсовая Работа
Реферат по теме Современные возможности метода проектов
Развитие Научного Потенциала России Курсовая
Курсовая работа по теме Квалификация государственной измены по Уголовному кодексу Российской Федерации
Реферат: Научные открытия Исаака Ньютона
Написание Диссертации С Чего Начать
Практическая Работа Механическая Работа
Контрольная Работа По Цитологии 9 Класс
Курсовая работа по теме Анализ развития страхования в Украине
Реферат по теме Расстройства влечения, их формы, классификация
Реферат по теме Ядерное оружие: типы, физика, поражающие факторы, экологические последствия
Эссе По Обществу План Подробнее
Заявление На Дипломную Работу Образец
Реферат: Экс-гей
Реферат по теме Топографические знаки
Реферат: Беременность и сердечно-сосудистые заболевания
Статья: Социальная традиция
Курсовая работа: Опыт ипотеки в развивающихся странах

Report Page