Нужен пример использования динамической памяти - C (СИ)
Формулировка задачи:
Привет всем, помогите, пожалуйста, разобраться с функциями типа malloc, realloc и т.п. Просто стояла задача такая: отсортировать массив одним способом. Все замечательно, но преподаватель вводит размер массива 2 миллиона и все падает Говорит, что надо использовать дин. память. я понимаю, что делают эти функции, однако на практике применять не приходилось. Не могли бы скинь пример каких-то полярограмм?
Решение задачи: «Нужен пример использования динамической памяти»
textual
Листинг программы
a = (int*)malloc(size * sizeof(int));
for (i=0; i<size; ++i)
{
a[i]=i ; //rand()%15 -6 ;
printf ("%i ", a[i]);
}
printf ("\n\n");
// тут меняю местами первый второй, третий и четвертый эл. местами
for (i=0; i<size; ++i)
{
removal = a[i * 2 + 1];
a[i * 2 + 1] = a[i * 2];
a[i * 2] = removal;
printf ("%i ", a[i]);
}
Объяснение кода листинга программы
Примерный разбор кода:
a = (int*)malloc(size * sizeof(int));- выделение памяти под массивaразмеромsizeс помощью функцииmalloc().for (i=0; i<size; ++i)- цикл по всем элементам массиваa.a[i]=i- присваивание каждому элементу массива его индекса.printf (%i, a[i]);- вывод значения каждого элемента массива через пробел.\n\n- переход на новую строку.for (i=0; i<size; ++i)- цикл по всем элементам массиваa.removal = a[i * 2 + 1];- временное хранение значения элемента с индексомi * 2 + 1в переменнойremoval.a[i * 2 + 1] = a[i * 2];- обмен значениями элементов с индексамиi * 2 + 1иi * 2.a[i * 2] = removal;- обмен значениями элементов с индексамиi * 2иi * 2 + 1.printf (%i, a[i]);- вывод значения каждого элемента массива через пробел.