Безопасно ли хранить указатели C ++ в C #?

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

6
задан svick 14 August 2011 в 13:29
поделиться