Это беспокоило меня некоторое время, но я не нашел хорошего ресурса по этому вопросу.У меня есть несколько глобальных переменных в моем коде.Очевидно, что они инициализируются в некотором порядке, но нужна ли для всех этих объектов память, зарезервированная до какой-либо инициализации?
Вот простой пример того, что может быть не так в моем коде, и как я могу использоватьответ:
У меня был map<RTTI, object*> objectPool
, который содержит образцы каждого класса в моем коде, который я использовал для загрузки объектов из файла.Для создания этих примеров я использую некоторые глобальные переменные просто для того, чтобы представить экземпляр класса в objectPool.Но иногда эти примеры были инициализированы до самого ObjectPool.И это породило ошибку во время выполнения.
Чтобы исправить эту ошибку, я использовал задержанный инициализатор map<RTTI,object*>* lateInitializedObjectPool;
.Теперь каждый экземпляр сначала проверяет, инициализирован ли objectPool, и инициализирует его, если нет, а затем приводит себя в пул объектов.Кажется, это работает нормально, но я беспокоюсь, если даже память, необходимая для указателя пула объектов, не зарезервирована до того, как другие классы начнут представляться, и это может вызвать нарушение доступа.