Bah, I cant find this bug to save my life.

(NOTE: It is 4AM at the moment)

here is the section of code where the thing happens..

Code:
#include "C8memory.h"

C8memory::C8memory()
{
    
    Memory = new unsigned char [MEMORY_SIZE];
    Registers = new unsigned char [REGISTERS];
    Stack = new unsigned short [STACK];
    
    Reset();
    
}

C8memory::~C8memory()
{
    
    delete [] Memory;
    delete [] Registers;
    delete [] Stack;
    
}

void C8memory::Reset()
{
    
    memset(Memory, 0, MEMORY_SIZE);
    memset(Registers, 0, REGISTERS);
    memset(Stack, 0, STACK);
    
    PC = 0x200;
    Register_I = 0x200;
    SP = 0;
    
}     

bool C8memory::LoadRom(char *filename)
{
    
    std::ifstream rom(filename, std::ios::binary);
    
    if(!rom.is_open()) return false;
    
    rom.seekg(0, std::ios::end);
    const long file_size = rom.tellg();
    rom.seekg(0, std::ios::beg);
    
    char *rom_buffer = new char [file_size];
    
    rom.read(rom_buffer, file_size);
    rom.close();
    
    memcpy(&Memory[0x200], rom_buffer, file_size); //<--HERE is the fault
    
    delete [] rom_buffer;
    return true;
          
}
I am exausted and it could possibly be something simple.
Sorry in advance if it is