Нет. buffer
является char *
. Это указатель на char
данные. Указатель занимает всего 4 байта (в вашей системе).
Указывает на 10240 байтов данных (что, кстати, не 1Кб. Больше похоже на 10Кб), но указатель не знает, что . Рассмотрим:
int a1[3] = {0, 1, 2};
int a2[5] = {0, 1, 2, 3, 4};
int *p = a1;
// sizeof a1 == 12 (3 * sizeof(int))
// but sizeof p == 4
p = a2
// sizeof a2 == 20
// sizeof p still == 4
Это главное различие между массивами и указателями. Если бы это не сработало, sizeof p
изменится в приведенном выше коде, что не имеет смысла для константы времени компиляции.