gpt4 book ai didi

c++ - 编译器特定的内存初始化

转载 作者:IT王子 更新时间:2023-10-28 23:37:46 25 4
gpt4 key购买 nike

有没有办法保证整个程序中某些对象的静态对象初始化顺序。我有内存分配器,我希望将其作为程序中的第一件事分配,因为它们将在整个程序的其他地方使用,我想使用这些分配器来分配所有以后的内存。

我知道这可能是特定于编译器的,因为我不相信 C++ 标准允许这样做。我感兴趣的两个编译器是 gcc 和 VS2010 的编译器。如果有办法,有人可以解释一下吗?

编辑

我不想“在第一次使用时构造”,因为分配器将分配我想在程序开始时初始化的大块内存。

最佳答案

您可以通过使用特定于编译器的指令来影响初始化的顺序。 MSVC 有一个编译指示

#pragma init_seg({ compiler | lib | user | "section-name" [, func-name]} )

这可以在某种程度上设置特定模块的优先级。 init_seg 见此引用资料.

gcc 编译器具有类似/相关的属性语法,用于设置特定初始化的 relative 优先级。看起来是这样的

Some_Class  A  __attribute__ ((init_priority (2000)));
Some_Class B __attribute__ ((init_priority (543)));

并在 init_priority 上的此页面上进行了解释.

关于c++ - 编译器特定的内存初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10198675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com