У меня есть управляемый класс, который имеет элемент, который является указателем на собственный объект. Как это (не реальный код):Указатель C++ для указателя на собственный объект
ref class ManagedClass {
private:
NativeClass* ptr = nullptr;
};
мне нужно инициализировать этот указатель указывает на допустимый объект, вызвав нативный метод, который принимает указатель на указатель:
void native_init(NativeClass** nc);
Но когда я пытаюсь получить этот указатель на указатель на PTR по:
native_init(&ptr);
VS показывает сообщение, что
аргумент типа interion_ptr несовместима с параметром типа NativeClass **
Итак, как я могу получить указатель на этот указатель?
Этот код работает:
NativeClass *local_ptr;
native_init(&local_ptr);
ptr = local_ptr;
Но когда я пытаюсь удалить это следующим образом:
delete ptr
сбой приложения говорят, что я пытаюсь «для чтения или записи в защищенную память». Что мне делать?
Нет, native_init использует новые, я могу это гарантировать. Исключение возникает, если я использую pinned ptr. – Ivan
У вас также может быть проблема с двойным удалением, поэтому вы можете отладить это. Кроме того, убедитесь, что 'new' и' delete' используют одну и ту же базовую библиотеку времени выполнения. –