有一段时间以来,我一直被困扰着,但是我没有找到任何有关这个问题的好资源。我的代码中有一些全局变量。很明显它们是按某种顺序初始化的,但是在任何初始化发生之前,为所有这些对象保留内存吗?
下面是一个简单的示例,说明了我的代码可能出现的问题以及我如何使用答案:
我有一个
为了修复该错误,我使用了一些延迟初始化器
下面是一个简单的示例,说明了我的代码可能出现的问题以及我如何使用答案:
我有一个
map<RTTI, object*>
,其中包含我的代码中每个类的示例,我用它来从文件中加载对象。为了创建这些示例,我使用一些全局变量来向objectPool引入类实例。但有时这些示例实例会在ObjectPool本身之前初始化。这将生成运行时错误。为了修复该错误,我使用了一些延迟初始化器
map<RTTI,object*>* lateInitializedObjectPool;
。现在每个实例首先检查是否已经初始化objectPool,如果没有,则进行初始化,然后将其引入对象池。看起来工作得很好,但我担心即使在其他类开始引入自己之前,也没有为对象池指针保留所需的内存,这可能会导致访问冲突。
int array[100000]
。你可以很容易地看出当定义在函数内部时(意味着它被分配在堆栈中),你会得到堆栈溢出或类似的运行时错误,但当它声明在函数范围之外时,你就不会遇到这些问题。 - Ali1S232