Turns out casting void* to char* and then incrementing by width is the way to go. Also memcpy versus copying bytes in a for loop seems to make no difference