У меня, по сути, следующий код:
int fileWrite(int file, void * pBuffer, size_t size)
{
size_t bytesWritten = (size_t)write( file, pBuffer, size ) ;
if (bytesWritten != size)
{
return -1;
}
return 0;
}
Он работает, если размер составляет 1 ГБ, но когда размер составляет ~ 2 ГБ, он последовательно получает 4 КБ байта. Я могу это исправить, обернув запись в al oop и переместив буфер вверх, но мне любопытно, почему он всегда терпит неудачу.
Например, если размер равен 2147483648, запись только для записи пишет 2147479552, оставляя 4096 неписаные. Почему это произошло, и правильно ли всегда заключать запись в al oop?