Utilisation correcte de StructureToPtr
Bonjour,
(Visual Studio 2005)
J'ai une classe déclarée :
Code:
public ref class MyClass{ ... }
Je voudrais récupérer un pointeur void * d'une instance de cette classe. J'ai donc procédé ainsi :
Code:
1 2 3 4 5 6 7 8 9
| // je crée un IntPtr alloué avec la taille de l'objet dont je veux récupérer un pointeur
int rawsize = sizeof( this );
IntPtr objectAddress = System::Runtime::InteropServices::Marshal::AllocHGlobal( rawsize );
// je convertis mon objet en IntPtr
System::Runtime::InteropServices::Marshal::StructureToPtr(this, (IntPtr)objectAddress, true);
// et hop j'ai mon pointeur
void * ptr = (void *)objectAddress; |
Mais à l'éxécution du StructureToPtr j'obtiens :
Code:
1 2
|
Additional information: La structure spécifiée doit être blittable ou avoir des informations de disposition. |
De ce que j'ai compris, les variables blittable sont de type simple (bool, int, etc).
Et effectivement ma classe contient des objets de classe plus complexe. Donc elle n'est pas blittable ? Je fais comment alors ?
De plus pourquoi doit-on allouer de la mémoire pour récupérer un pointeur sur un objet qui est déjà alloué ?
Merci.
Flo.