gpt4 book ai didi

c++ - 指向动态分配数组的静态指针

转载 作者:可可西里 更新时间:2023-11-01 09:44:02 26 4
gpt4 key购买 nike

所以这个问题比较直截了当,我有几个半大型查找表~500kb 一张。现在,这些完全相同的表被几个类实例化(可能很多)使用,考虑到这一点,我不想在每个类中存储相同的表。所以我可以将整个表作为“静态”成员转储到堆栈中,或者我可以有指向这些表的“静态”指针。在任何一种情况下,该类的构造函数都会检查它们是否已初始化,如果没有则进行初始化。但是,我的问题是,如果我选择指向表的静态指针(以免滥用堆栈空间),什么是适当清理这些表的好方法。

另请注意,我考虑过使用 boost::share_ptr,但选择不使用,这是一个非常小的项目,我不打算添加任何依赖项。

谢谢

最佳答案

静态成员永远不会在堆栈上分配。当您声明它们时(当然,您明确声明了),它们会在某处分配空间(数据段?)。

如果查找表是类的成员有意义,那么将它们设为静态成员!

当一个类在堆栈上实例化时,静态成员变量不构成堆栈成本的一部分。

例如,如果您想要:

class MyClass {
...
static int LookUpTable[LARGENUM];
};

int MyClass:LookUpTable[LARGENUM];

当您在堆栈上实例化 MyClass 时,MyClass:LookUpTable 指向您在上面代码示例的最后一行显式分配的对象。最重要的是,不需要释放它,因为它本质上是一个全局变量;它不会泄漏,因为它不在堆上。

关于c++ - 指向动态分配数组的静态指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1230915/

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