gpt4 book ai didi

c++ - 在 C++ 函数中分配大型本地内存的最佳方法

转载 作者:行者123 更新时间:2023-11-30 01:27:46 25 4
gpt4 key购买 nike

我有一个程序,其中我是一个相当大的内存块表,它是一个包含两个整数的结构(它们必须至少有 4 个字节才能容纳 1,000,000,000)。该结构目前有 500 多个条目。所以我们谈论的是 4k。 4k 的堆栈空间看起来并不多,但对于一个可能只调用一次的函数来说确实很浪费。 (假设我们将在程序的整个生命周期内调用它一次,所以如果分配速度稍慢,没关系,因为空间在分配时间内更有值(value))。

代码只是简单地查找值,生成它的代码相当繁重,而且我们只是在寻找特定的值。我已经有了代码,而且查找速度要快得多,所以毫无疑问我想沿着这条路走下去。我可以添加一个文件加载以从文件中获取数据,但至少在我看来这似乎有点过分了。

现在我可以想到两种分配它的方法。使它成为一个全局变量,并使它成为一个局部变量。显然,本地是可行的方法,因为只有这个函数需要表格。然而,我正在寻找的是,如果有任何我可以使用的关键字,或者加载该变量的任何方式(目前它只是这些对的数组),那将是最有益的。

我最好的情况是让它尝试仅在函数范围内进入内存,然后允许该内存返回给系统。以尽可能高效的方式。除了将数据本地化之外,还有什么我应该采取的步骤吗?

最佳答案

Is there a step beyond making the data local that I should take?

仅此而已。它应该看起来像这样:

void proc() {
t_thing things[500]; // << you could use std::array here too
}

它对您的需求“慢”是值得怀疑的。如果您想改进这一点,指定对齐方式可能会有所帮助。

关于c++ - 在 C++ 函数中分配大型本地内存的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8383445/

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