В настоящее время я работаю над некоторым кодом 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 #, или это будет по какой-то причине слишком нестабильно или опасно?