Realmente tendría que ser entre adivino y genio para saber qué pides. Si usas el contenido
addr de un objeto
dsmdata estás usando el puntero, para poder copiarlo tendrías que
dereferenciar * y copiar la
dereferenciación mediante el operador
& en el argumento de la función que fuera. Mientras no lo hagas estarás manejando el puntero y no el dato en sí, que a bajo nivel sigue siendo un puntero a la primera dirección de memoria. La diferencia a bajo nivel entre un puntero y un dato es
Código Seudocódigo Intel:
Ver originalmov [x], 0x03 //32b
lea eax, [x]
mov [a], eax //32b
si
x fuera
34b20102, [x] es el contenido que hay en
34b20102 a sería
1242af33 y [a] el contenido que haya en
1242af33, que es
34b20102
Código RAM:
Ver original34b20102 03 cc cc cc cc cc cc cc cc cc
....
1242af33 02 01 b2 34 cc cc cc cc cc cc
cc es
nada. La diferencia entonces entre un dato y un puntero es que el puntero hace que se almacene en una dirección de memoria otra dirección de memoria, como el segundo caso donde en
1242af33 ([a])se almacenaba
34b20102.
Espero que lo hayas entendido.
Un saludo.