Первое, что нужно отметить: память, выделенная для новых и удаленных, полностью глобальна. вещи не удаляются автоматически, когда указатели выходят из области видимости или функция закрывается. если у вас есть указатель на распределение (например, указатель, возвращаемый туда), вы можете удалить его когда угодно и когда угодно. хитрость, просто убедиться, что другие вещи не удаляют это без вашего ведома.
это преимущество с такой структурой функций, которую имеет функция чтения fstream. Совершенно очевидно, что все, что собирается сделать функция, - это прочитать число байтов размера в предоставленный вами буфер, не имеет значения, был ли этот буфер выделен с использованием new, будь то статический или глобальный буфер, или даже локальный буфер, или даже просто указатель на локальную структуру. и также совершенно ясно, что функция больше ничего не будет делать с буфером, который вы передаете, как только она прочитает данные.
с другой стороны, возьмите структуру вашей функции ReadBlock; если бы у вас не было кода для этого, было бы сложно выяснить, что именно он возвращает. это возвращает указатель на новую память? если это так, то ожидаете ли вы его удаления? это удалит это это самостоятельно? если да, то когда? это даже новый указатель? это просто возвращает адрес некоторого общего статического буфера? если это так, когда буфер станет недействительным (например, перезаписан чем-то другим)
Глядя на код для ReadBlock, становится ясно, что он возвращает указатель на новую память и ожидает, что вы удалите его, когда закончите с ним. этот буфер никогда не будет перезаписан или станет недействительным, пока вы его не удалите.
в отношении скорости, это еще одно преимущество fsream.read - подход «разбираешь буфер»: ВЫ выбираете, когда выделяется память. если вы собираетесь «читать данные, обрабатывать, удалять буфер, читать процесс удаления данных, удалять буфер, и т. д.», будет гораздо эффективнее просто выделить один буфер (до максимального размера, который вам понадобится, это будет размер вашего самого большого чтения) и просто используйте это для всего, как предложено Стивеном.