【发布时间】:2011-09-02 09:16:48
【问题描述】:
我有一个内存位置 a,我想快速将一定数量的字节复制到另一个位置,我该如何在 D 中执行此操作?
例如我将如何做到这一点:
int main()
{
void* src_data = 0x40001255;
void* dst_data = 0x47F22000;
u32 size = 0x200;
memcpy(dst_data, src_data, size);
}
还有如何快速填充结构:
struct data_struct
{
u32 block1;
u32 block2;
u32 block3;
u32 block4;
u32 block5;
u62 block6;
u128 bigblock;
} data_struct_t;
int main()
{
void* src_data = 0x40001255;
struct data_struct_t dst_data;
u32 size = sizeof(data_struct);
memcpy(dst_data, src_data, size);
}
谢谢! 罗尔
【问题讨论】:
-
对于最后一种情况,即使在 C 中也不应使用 memcpy,除非您 100% 确定指向的内存具有与编译器用于结构布局相同的填充和对齐方式。这是非常不便携的!
-
是的,你是对的,但我想知道的是如何从理论上在 D 中进行这种内存操作。我知道不同编译器的对齐方式是如何工作的。
标签: performance memory d