Вы не создаете достаточно большой буфер, потому что вы не используете ios::binary
.Каждый '\n'
в файле будет расширен до '\r\n'
;так как вы изменили размер буфера до количества байтов в файле, он не может обработать расширение, и вы получаете классический переполнение буфера.