Crash when dereferencing pointer

I wrote this function:

uint16_t sequence_read_uint16_t() {
    uint16_t *ptr = (uint16_t *)(sequence_buffer + 1);

    sequence_buffer_read_index += 2;

    return *ptr;
}

When calling it and 

ptr points to something odd, the chip seems to crash. Can you not dereference odd memory addresses?
Or is there a different reason for the crash?
Kind regards,
Daniel
Related