Позволю дополнить ответ
@jcmvbkbc
Начну с того, что когда вы программируете на C\C++, то код стоит воспринимать в терминах выделение\освобождения памяти и операций с оной.
Теперь к нашим баранам. Исторически сложилось, что базовые типы в C++ не имеют фиксированный длины, кроме char. Одновременно в голом Си нет никаких безопасных контейнеров и итерация возможна только с помощью голой арифметике указателей. А в стандарте сказано, что прибавлению к указателю числа n означает его смещение на n*sizeof(T) байт.
Отсюда вывод, параметр size = length/sizeof(T), где length - это размера куска памяти в байтах.
Замечу, что ответ является первым приближением к правильному, т.к. не рассмотрен случай не выровненного буфера, битовые поля и некоторые экзотические случаи, но в целом логика сохраняется.