Почему malloc работает не так, как ожидается? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Листинг программы
  1. int main()
  2. {
  3. int* p =malloc(sizeof(int));
  4. p[100]=5;
  5. printf("%s\n",strerror(errno));
  6. printf("%d",*(p+100));
  7. return 0;
  8. }

Решение задачи: «Почему malloc работает не так, как ожидается?»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. int main()
  6. {
  7.     printf("first_brk __ %p\n",sbrk(0));
  8.     int* ptr = calloc(5,sizeof(int));
  9.     printf("ptr = %p\n", ptr);
  10.  
  11.     printf("after_first_alloc_brk __ %p\n",sbrk(0));
  12.  
  13.     char* char_ptr = calloc(3,sizeof(char));
  14.     printf("char_ptr = %p\n",char_ptr);
  15.     printf("after_second_alloc_brk __ %p\n",sbrk(0));
  16.     return 0;
  17. }

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы
  2. Устанавливается начальный адрес кучи (brk)
  3. Выделяется память под массив из 5 целых чисел
  4. Выводится адрес выделенной памяти (ptr)
  5. Вычисляется размер памяти, выделенной под массив (sizeof(int) * 5)
  6. Вычисляется начальный адрес кучи (brk) после выделения памяти
  7. Выделяется память под строку из 3 символов
  8. Выводится адрес выделенной памяти (char_ptr)
  9. Вычисляется размер памяти, выделенной под строку (sizeof(char) * 3)
  10. Вычисляется начальный адрес кучи (brk) после выделения памяти
  11. Возвращается 0, чтобы указать, что программа успешно завершилась

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы