Это должно работать до тех пор, пока address
правильно выровнен, чтобы позволить хранить 64-битные слова в вашей архитектуре.
Мне любопытно: почему ты пишешь
for(i = 0; i< size; i++)
{
*ptr = pattern;
ptr++;
}
когда
for(i = 0; i < size; i++)
*ptr++ = pattern;
проще и легче писать и читать?