У меня довольно большое устаревшее приложение, которое использует только обычные указатели.Прямо сейчас я добавляю новый модуль, пытаясь использовать «более современные вещи», например, умные указатели.
Основной модуль отправляет сообщение через коммуникационную DLL в мой новый подмодуль (с обычным указателем).В моем новом подмодуле я использую shared_pointer для обработки сообщений.Когда общий указатель пытается удалить указатель, я получаю нарушение прав доступа в dectructor сообщения, потому что указатель VTable равен 0xdddddddd.Я уже нашел этот вопрос SO , который говорит, что это потому, что указатель уже освобожден.
Кажется, что основной модуль уже удаляет нормальный указатель, прежде чем разделяемый указатель удаляет его.
Я не хочу использовать общие указатели в старом главном модуле (было бы очень много рефакторинга на этом этапе), но есть ли решение, как я могу использовать как обычные, так и общие указатели в моем приложении?Обычная проверка NULL в деструкторе не помогает.