size_t
и int
не являются взаимозаменяемыми. Например, в 64-разрядной версии Linux size_t
имеется 64-разрядный размер (т. Е. sizeof(void*)
), но int
- 32-разрядный.
Также обратите внимание, что size_t
не имеет знака. Если вам нужна подписанная версия, на некоторых платформах есть ssize_t
, и это будет более актуально для вашего примера.
Как правило, я бы предложил использовать int
для большинства общих случаев и использовать только size_t
/ ssize_t
, когда есть определенная потребность в нем (например, с mmap()
).