# 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
не должна точно знать, сколько памяти выделено для буфера
?