C++ TArray insane memory usage

Reserve is just for ‘reserve’ its initial size:

HeightMap.Reserve(4016016);
HeightMap.Init(0, 4016016);

If you need to resize after that use SetNum().