Actualmente estoy trabajando en algún código C#/C++ que hace uso de invoke. En el lado de C++ no es un std :: vector lleno de punteros cada uno identificado por el índice del código C#, por ejemplo, una declaración de la función se vería así:¿Es seguro mantener los punteros de C++ en C#?
void SetName(char* name, int idx)
Pero ahora estoy pensando, ya que' estoy trabajando con los punteros no podía enviado a C# la dirección del puntero en sí y luego en el código que podría hacer algo como esto:
void SetName(char*name, int ptr)
{
((TypeName*)ptr)->name = name;
}
Obviamente eso es una versión rápida de lo que quiero llegar (y probablemente no lo hará compilar).
¿Se garantizaría que la dirección del puntero permanezca constante en C++ de modo que pueda almacenar su dirección de forma segura en C# o esto sería demasiado inestable o peligroso por alguna razón?
Solo para aclarar: ¿Sabes que el código anterior se compilará en C# solo si está dentro de un bloque 'inseguro'? –