В настоящее время я работаю над кодом C # / C ++, который использует invoke.На стороне C ++ есть std :: vector, полный указателей, каждый из которых идентифицируется индексом из кода C #, например, объявление функции будет выглядеть так:
void SetName(char* name, int idx)
Но теперь я думаю, так какЯ работаю с указателями, я не мог отправить в C # адрес самого указателя, тогда в коде я мог бы сделать что-то вроде этого:
void SetName(char*name, int ptr)
{
((TypeName*)ptr)->name = name;
}
Очевидно, что это быстрая версия того, что я получаю (ивероятно, не скомпилируется).
Будет ли гарантированно сохраняться адрес указателя в C ++ таким, чтобы я мог безопасно хранить его адрес в C #, или это было бы слишком нестабильным или опасным по какой-то причине?