Я адаптировал приложение "Testing if an arbitrary pointer is a valid object pointer" Мэтта Галлахера в проекте iOS, который использует Objective-C++. Он отлично работает с объектами Objective-C, но всегда говорит мне, что мои C++-указатели являются недопустимыми, независимо от того, работает он или нет. Иногда код падает с указателем. Иногда код работает нормально. Но тестовый метод всегда говорит мне, что указатель ошибочен.Проверка правильности указателя C++ (в Objective-C (++))
Есть ли кто-нибудь, кто знает, как адаптировать этот код к классам и объектам C++? Я мог представить, что код работает только с Objective-C в соответствии с использованием «Class»
Вы пытались использовать 'nullptr', когда вы проверяли, был ли указатель действительным? Если вы хотите проверить действительные данные, вам нужно разыменовать указатель, и это приведет к exc_bad_access (segfault), если сам указатель недействителен. На данный момент я не думаю, что есть какой-либо способ действительно проверить данные. –
Этот метод очень специфичен для реализации Objective-C от Apple, и в лучшем случае является ненадежным. Нет никакого способа сделать что-либо подобное для C++ и, как отмечает автор, «никогда не использовать это в производственном коде». – molbdnilo
@AlexanderW да, мы проверяли значение nullptr, null, nil, 0 ... но код иногда всегда продолжает выполнение и сбой происходит с EXC_BAD_ACCESS, который не может быть обнаружен ... => molbdnilo мы используем это только для записи журналов отладки, чтобы получить подробную информацию о рабочем процессе наших внутренних тестеров. Они часто не сообщают о сбоях правильно ... –