Другой пример: int* get_int_ptr() { int i; return &i; } int* ptr = get_int_ptr(); if (ptr) { cout << *ptr; }
Но я же проверку сделал
хорошо, спасибо, я понял свою ошибку. Но все же, если есть уверенность, что указатель не мог в коде меняться - возможна ли проблема где-то извне, не знаю правда где...
Всё возможно, но вероятность этого мала. Чтобы это пофиксить советую в первую очередь воспроизвести ошибку
Очень редко, на клиентских машинах, уже месяц как не вылазит у меня, но изредка стреляет у клиентов. Понял, спасибо за помощь.
Возможна. Например, раздолбали кучу где-то раньше. Без отладчика не поймёшь нормально. Если с отладчиком беда, для начала просто попробуй получить поля по этому указателю.
Фактор рандома могут вводить разные вещи. Начиная от многопоточности, заканчивая инвалидацией указателей при реаллокации вектора при переполнении.
Понял вас. Многопоточность есть, один proxy объект на поток, но создается и помирает с потоком.
Тогда вряд ли это data race
Нет, невозможна. Проблема 100% в твоём коде.
Обсуждают сегодня