Я немного запутался в функции malloc().
если sizeof(char) равно 1 byte и функция malloc() принимает N байтов в качестве аргумента для выделения, то, если я это сделаю:
char* buffer = malloc(3);
Я выделяю буфер, который может хранить 3 символа, верно?
char* s = malloc(3);
int i = 0;
while(i < 1024) { s[i] = 'b'; i++; }
s[i++] = '$';
s[i] = '\0';
printf("%s\n",s);
это работает нормально. и сохраняет 1024 b's в s.
bbbb[...]$
почему приведенный выше код не вызывает переполнение буфера? Кто-нибудь может объяснить?