これが機能しない理由を理解できません。私が知る限り、画像ファイル全体を読み取っているようには見えません...わかりませんが。基本的に、ヒープに読みたい生の画像があります。
unsigned char* ReadImageFromFile(const char* FILENAME, unsigned int SIZE_BYTES)
{
unsigned char *data = (unsigned char*) malloc(SIZE_BYTES);
std::ifstream image(FILENAME);
image.read((char*) data, SIZE_BYTES);
image.close();
return data;
}