Есть ли способ получить объем памяти, выделенный в данный момент для значения указателя?
Не в том смысле, в котором вы ищете, нет.
На языкеВ смысле, объем памяти, выделенный для значения указателя (в вопросе), конечно, sizeof(unsigned char *)
.Это (опять же, конечно) никоим образом не коррелирует с размером блока памяти, на который указывает указатель.Указатель просто не содержит такой информации.
Если вы (по какой-то причине) не можете передать информацию о размере вместе с указателем, вы должны выбрать значение unsigned char
, чтобы обозначить конец блока памяти (иприсвойте это значение концу блока памяти).(Вот так работают строки в C).Единственный способ определить длину блока - это циклически перебрать значения.
Почему у вас есть указатель на беззнаковый символ, если он действительно указывает на символ?Кстати, char buff
вряд ли является буфером, поскольку он содержит только одно значение char.