Tengo una ubicación de memoria y quiero copiar una cierta cantidad de bytes a otra ubicación rápidamente, ¿cómo haré esto en D?¿Cómo hago algo así como una memcpy en D
Por ejemplo ¿cómo voy a hacer esto:
int main()
{
void* src_data = 0x40001255;
void* dst_data = 0x47F22000;
u32 size = 0x200;
memcpy(dst_data, src_data, size);
}
También cómo llenaría una estructura rápida:
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);
}
Gracias! Roel
Para el último caso, no debe usar memcpy incluso en C, a menos que esté 100% seguro de que la memoria señalada tiene el mismo relleno y alineación que el compilador utiliza para el diseño de la estructura. ¡Esto es muy no portátil! – harald
Sí, tiene razón, pero lo que estoy tratando de averiguar es cómo hacer este tipo de operaciones de memoria en D teóricamente. Sé cómo funciona la alineación en diferentes compiladores. –