2012-04-06 87 views
0

如果我们假设我对齐的内存块与包括memalign到4字节,将它仍然是安全的事:内存对齐和长拷贝

unsigned int* source = In.Data; 
unsigned int* dest = Out.Data; 

int loops = In.Size/4; //size is the same for both in/out 

while (loops) 
{ 
    *dest++=*source++; 
    loops--; 
} 

,而不要照搬1个字节的消息吗?如果不是如何判断内存是否正确对齐,以便在需要时回退到标准字节拷贝?

+1

您必须将内存与“alignof(unsigned int)”对齐,而不是“4字节”。 – 2012-04-06 10:31:33

+0

是的,我这样做(sizeof(unsigned int))D: – user1010005 2012-04-06 10:34:15

+0

虽然通常不需要'alignof(T)== sizeof(T)'。例如,考虑'long double'类型。 – 2012-04-06 10:38:19

回答

1

是的,它是安全的,因为您的块已正确对齐。

如果从malloc获得块,那么也将是安全的,因为由malloc返回的内存块将保证为任何目的正确对齐。

+0

感谢您的及时回复:D – user1010005 2012-04-06 10:34:56