Почему 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;
}

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

  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
Похожие ответы