C++ 内存对齐和长拷贝
如果我们假设我将内存块与memalign对齐为4字节,那么这样做是否仍然安全:C++ 内存对齐和长拷贝,c++,c,memory,alignment,C++,C,Memory,Alignment,如果我们假设我将内存块与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字节?如果不知道如何判断内存是否正确对齐,以
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字节?如果不知道如何判断内存是否正确对齐,以便在需要时回退到标准字节拷贝?是,这是安全的,因为块已正确对齐
如果从
malloc
获取您的块也是安全的,因为malloc
返回的内存块保证在任何情况下都能正确对齐 您必须将内存对齐到alignof(unsigned int)
,而不是“4字节”。是的,我这样做了(sizeof(unsigned int))D:但是通常不需要alignof(T)==sizeof(T)
。例如,考虑<代码>长双倍/代码>类型。谢谢及时回复:D