2012-04-06 84 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