我有一个内存位置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);
}
谢谢! 罗埃尔
答案 0 :(得分:12)
分配到切片将执行数组副本,该副本在内部调用memcpy。
void main()
{
void* src_data = 0x40001255;
void* dst_data = 0x47F22000;
uint size = 0x200;
dst_data[0..size] = src_data[0..size];
}
对于第二个:
struct data_struct
{
uint block1, block2, block3, block4, block5;
ulong block6;
uint[4] bigblock;
}
void main()
{
auto src_data = cast(data_struct*) 0x40001255; // unaligned, WTF?!
auto dst_data = *src_data;
}
答案 1 :(得分:8)
请注意,您还可以访问D中的C memcpy
.D可以直接访问C的整个标准库。