Почему у вас память выделяется под int, а читаются байты размером с double?
Почему у вас поганый паскальский стиль с выделением переменных где-то далеко в начале программы и их использованием? Почему вы не объявили переменную i в заголовке цикла?
Почему вы используете функции из стандартной библиотеки C (fopen, fwrite, ...), хотя пишите на C++?
Зачем вы перемещаете указатель в начало файла сразу после открытия? Сразу после открытия указатель и так стоит на начале.
В том виде, как сделано у вас, можно все операции проделать в памяти, выполнив отображение файла.