Общая динамическая память для разных функций - C (СИ)
Формулировка задачи:
Ниже код, ожидал, что адреса будут одинаковые, но это не так, хочу выделить память в одной функции, а использовать в другой.
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- void mema(int* c,void* p)
- {
- *c=10;
- p=malloc(*c);
- printf("address=%p\n",p);
- }
- int main()
- int c;
- void* p;
- mema(&c,p);
- printf("address=%p\n",p);
- free(p);
- return 0;
- }
Пропущенная скобка после строки с main суть не меняет.
Решение задачи: «Общая динамическая память для разных функций»
textual
Листинг программы
- int* mema(int* c)
- {
- *c=10;
- int* p=malloc(*c*sizeof(int));
- return p;
- }
- int main()
- {
- int c;
- void* p;
- p=mema(&c);
- printf("address=%p\n",p);
- free(p);
- return 0;
- }
Объяснение кода листинга программы
- В функции
mema
выделяется динамическая память с помощьюmalloc
с указанием размера памяти в*c
элементов. - В функции
main
создается переменная типаint
с именемc
. - В функции
main
вызывается функцияmema
с передачей адреса переменнойc
в качестве аргумента. - В функции
mema
значение переменнойc
изменяется на 10. - В функции
main
выводится адрес выделенной памяти с помощью функцииprintf
. - В функции
main
освобождается выделенная память с помощью функцииfree
. - В функции
main
возвращается 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д