Почему 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, чтобы указать, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д