gpt4 book ai didi

c - malloc 的全局数组

转载 作者:太空宇宙 更新时间:2023-11-04 04:02:31 25 4
gpt4 key购买 nike

我正在做一个项目,我需要 malloc 一些数据。我试图通过改变我使用的主要结构值来减少程序的堆峰值。我正在使用链表。我的结构是这样的:

struct myS{

int a,b;
float a,b;
struct myS *next;

};

我在想,与其分配结构指针,不如将其存储在一个全局数组中,因为我没有太多数据。我该怎么做?

最佳答案

如果您对所需的元素数量有上限,您可以创建一个全局数组 [不是动态分配],让它成为struct myS heap[] 和一个整数 idx,初始化为 0。一旦你分配了一个元素,你将需要增加idx,并将这个元素附加到请求者。

注意 - 只有当您不希望删除元素时,这才是一个好的解决方案 [或者您有能力只为每个元素分配一次]。
如果你确实需要删除,你将需要分配一个额外的数组来告诉你当前正在使用哪些元素,使idx循环[increase with idx = (idx + 1 ) % size],并在给它之前检查每个元素是否已分配,但正如我所说 - 它可能会更耗时!

代码快照[不支持删除]:

struct myS heap[SIZE];
int idx = 0;

...

struct myS* allocate() {
return &(heap[idx++]);
}

注意:上面的代码快照是危险的 - 如果您尝试分配比 SIZE 中更多的元素,它可能会溢出。

关于c - malloc 的全局数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10149746/

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