gpt4 book ai didi

c - 使用 static 而不是 malloc - C 语言

转载 作者:太空宇宙 更新时间:2023-11-04 04:45:55 24 4
gpt4 key购买 nike

在我用 c(使用 gtk)制作的窗口应用程序中,我首先必须创建一个指针,指向我发送给回调函数的指针。

因为我将指针发送到另一个函数,所以我认为我必须在堆上为它分配内存:

  GtkWidget **entry;
entry = malloc(5 * sizeof(GtkWidget));

entry[0] = entry_a;
entry[1] = entry_s;
entry[2] = entry_t;
entry[3] = entry_v;
entry[4] = entry_r;

GtkWidget 变量是局部变量

但是有人告诉我这不是必需的,因为它可以声明为静态的

  static GtkWidget *entry[5];

正确 - 该程序使用静态 GtkVidget 指针代替。我的问题是为什么什么这个静态在这个上下文中意味着什么?

最佳答案

所有具有static 存储类的变量都将具有程序执行生命周期和内部链接;但是,它的范围取决于声明的位置。

要解决您提出的问题,是使用 static 数组还是使用 malloc 数组实际上必须根据具体情况来确定。然而,在大多数情况下,内存很便宜,所以您不必担心性能问题,除非您的数组大小变得过大(int 数组大小为 5微不足道)。保护数组的完整性更值得关注。这就是为什么根据经验,您应该使变量的范围尽可能小。

关于c - 使用 static 而不是 malloc - C 语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20958470/

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