Como bien apuntas, yo apuesto a que es cosa de el tamaño variable de los strings al reservar memoria.
Porque al hacer el CopyMemory, el tamaño fijo/uniforme que pasas a copiar puede estar jugando malas pasadas según los strings de cada elemento del array dinámico. Mira a ver cual es el valor del sizeof que usas y con eso puedes comprobar si van por ahi las cosas.
Para solucionar puedes o bien intentar reservar manualmente (un método) con exactitud el tamaño de tu tipo definido según los carácteres de los strings, o usar arrays de chars de tamaño fijo en vez de strings con las desventajas de esto, o usar arrays de chars pero al reservar manualmente saber su longitud, si usas chars supongo que podrás usar todas esas funciones de conversión de string a char y viceversa, o si no otra idea mejor que se te ocurra.
Porque al hacer el CopyMemory, el tamaño fijo/uniforme que pasas a copiar puede estar jugando malas pasadas según los strings de cada elemento del array dinámico. Mira a ver cual es el valor del sizeof que usas y con eso puedes comprobar si van por ahi las cosas.
Para solucionar puedes o bien intentar reservar manualmente (un método) con exactitud el tamaño de tu tipo definido según los carácteres de los strings, o usar arrays de chars de tamaño fijo en vez de strings con las desventajas de esto, o usar arrays de chars pero al reservar manualmente saber su longitud, si usas chars supongo que podrás usar todas esas funciones de conversión de string a char y viceversa, o si no otra idea mejor que se te ocurra.
