Почему malloc работает не так, как ожидается? - C (СИ)
Формулировка задачи:
Листинг программы
- int main()
- {
- int* p =malloc(sizeof(int));
- p[100]=5;
- printf("%s\n",strerror(errno));
- printf("%d",*(p+100));
- return 0;
- }
Решение задачи: «Почему malloc работает не так, как ожидается?»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- int main()
- {
- printf("first_brk __ %p\n",sbrk(0));
- int* ptr = calloc(5,sizeof(int));
- printf("ptr = %p\n", ptr);
- printf("after_first_alloc_brk __ %p\n",sbrk(0));
- char* char_ptr = calloc(3,sizeof(char));
- printf("char_ptr = %p\n",char_ptr);
- printf("after_second_alloc_brk __ %p\n",sbrk(0));
- return 0;
- }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Устанавливается начальный адрес кучи (brk)
- Выделяется память под массив из 5 целых чисел
- Выводится адрес выделенной памяти (ptr)
- Вычисляется размер памяти, выделенной под массив (sizeof(int) * 5)
- Вычисляется начальный адрес кучи (brk) после выделения памяти
- Выделяется память под строку из 3 символов
- Выводится адрес выделенной памяти (char_ptr)
- Вычисляется размер памяти, выделенной под строку (sizeof(char) * 3)
- Вычисляется начальный адрес кучи (brk) после выделения памяти
- Возвращается 0, чтобы указать, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д