Malloc -> сколько памяти было выделено?

# include <stdio.h>
# include <stdbool.h>
# include <string.h>
# include <stdlib.h>

int main ()
{
  char * buffer;
  buffer = malloc (2);

  if (buffer == NULL){
    printf("big errors");
  }
  strcpy(buffer, "hello");
  printf("buffer is %s\n", buffer);
  free(buffer);
  return 0;
}

Я выделил 2 байта памяти для буфера указателя / символа , но если я назначу строку в стиле C hello ], он по-прежнему печатает всю строку, не выдавая мне никаких ошибок. Почему компилятор не выдает ошибку, сообщающую мне, что выделенной памяти недостаточно? Я прочитал пару вопросов, в которых спрашивается, как проверить, сколько память malloc фактически выделяет, но я не нашел конкретного ответа.Разве функция free не должна точно знать, сколько памяти выделено для буфера ?

7
задан Guy Avraham 26 September 2018 в 18:42
поделиться