До тех пор, пока распределение и освобождение памяти должным образом защищены и , вы также гарантируете, что структуры доступны только тогда, когда они находятся под одним и тем же мьютексом, я действительно не вижу в этом проблемы , Обратите внимание, что это касается доступа на чтение и запись, а не только на доступ на запись, так как вам нужно убедиться, что структура остается там, где она есть, пока кто-то читает данные из нее.
Есть ли вероятность, что какой-то код пытается получить доступ к этим структурам данных вне защиты мьютекса? Или, что еще хуже, может быть вероятность того, что некоторые из этих структур станут жертвами соображений времени жизни объектов C ++ (скажем, они разрушаются, потому что на них ссылаются с помощью boost :: shared_ptrs и последний shared_ptr только что вышел из здания?
Вы на 100% уверены, что это повреждение памяти? Другая ошибка, которая выглядит очень похожей, - это когда некоторый код удерживает ссылку, которой он не должен, и ссылочный объект перемещается из-за перераспределения памяти. Это не такой странный сценарий, поскольку добавление еще одного элемента в вектор может вызвать это (просто в качестве примера).