Ответ 1
Правильный шаблон - просто удалить объект:
delete fs;
Это будет переведено на вызов Dispose()
См. этот post для некоторых деталей того, что происходит под капотом. Преимущество этой идиомы заключается в том, что она позволяет вам писать:
{
FileStream fs(...)
...
}
И пусть метод Dispose вызывается правильно... эквивалентно использующему блоку в С#. Объект потока файлов по-прежнему распределяется по управляемой куче.