Solange die Zuweisung und Freigabe des Speichers richtig geschützt sind und Sie auch sicherstellen, dass die Strukturen nur zugegriffen werden, während sie unter dem gleichen Mutex sind, kann ich nicht wirklich sehe dies ein Problem zu sein. Beachten Sie, dass dies für Lese- und Schreibzugriff gilt, nicht nur für den Schreibzugriff, da Sie sicherstellen müssen, dass die Struktur beim Lesen von Daten dort bleibt, wo sie sich befindet.
Gibt es eine Chance, dass irgendwo Code versucht, auf diese Datenstrukturen außerhalb des Mutex-Schutzes zuzugreifen? Oder schlimmer noch, könnte es eine Chance geben, dass einige dieser Strukturen Opfer von C++ Objectives werden (sagen wir, sie werden zerstört, weil sie über boost :: shared_ptrs referenziert werden und das letzte shared_ptr gerade das Gebäude verlassen hat?
Sind Sie 100% sicher, dass es Speicherbeschädigung ist? Ein anderer Fehler, der sehr ähnlich aussieht, ist, wenn ein Code eine Referenz enthält, die nicht gelesen werden sollte, und das referenzierte Objekt aufgrund der Speicherumleitung verschoben wird wie das Hinzufügen, dass kann ein weiteres Element auf einen Vektor auslösen (nur ein Beispiel zu nennen).
Es gibt keine strengen Anforderungen für den Mutex-Schutz beim Zugriff auf das Objekt, solange nur ein Thread den Zeiger auf das Objekt gleichzeitig "besitzt". Zum Beispiel im Producer/Consumer-Modell, das in einer anderen Antwort erwähnt wird –