Ho una locazione di memoria a e voglio copiare una certa quantità di byte in un'altra posizione velocemente, come farei in D?Come faccio a fare qualcosa come una memcpy in D
Per esempio come faccio a fare questo:
int main()
{
void* src_data = 0x40001255;
void* dst_data = 0x47F22000;
u32 size = 0x200;
memcpy(dst_data, src_data, size);
}
anche come colmerebbe una struct veloce:
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);
}
Grazie! Roel
Per l'ultimo caso non si dovrebbe usare memcpy anche in C, a meno che non si sia certi al 100% che la memoria puntata abbia lo stesso riempimento e allineamento che il compilatore usa per il layout della struct. Questo è molto non portatile! – harald
Sì, sei corretto ma quello che sto cercando di scoprire è come fare questo tipo di operazioni di memoria in D in teoria. So come funziona l'allineamento su diversi compilatori. –