私はメモリ位置を持っていて、別の場所にある量のバイトを速くコピーしたいのですが、どのようにDでこれを行いますか?例えばmemcpyのようなことを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);
}
ありがとう! Roel
最後のケースでは、コンパイラが構造体レイアウトに使用するのと同じパディングとアラインメントを持つメモリが100%確実でない限り、Cでもmemcpyは使用しないでください。これは非常に移植性がありません! – harald
はい、あなたは正しいですが、私が見つけようとしているのは、Dのこの種のメモリ操作を理論的に行う方法です。私は異なるコンパイラのアライメントがどのように機能するかについて知っています。 –