gpt4 book ai didi

c - 在 C 中减少堆栈负载、内存分配并轻松转换 malloc() 的返回值

转载 作者:太空宇宙 更新时间:2023-11-04 05:06:21 27 4
gpt4 key购买 nike

  1. 众所周知,较大的局部/全局变量可能会导致堆栈溢出。我知道使用指针和在内存中分配空间有助于克服这个问题。但这是唯一的选择吗?如果我在全局范围内有(或需要)太多指针会怎样?

  2. 关于堆栈空间:全局结构类型变量是在堆栈中占用空间,还是像指针一样?我是否需要创建结构变量类型的指针以减少堆栈负载?

  3. 下面的代码是否也为名为 BIG 的 char** 变量分配了内存?

    // in the header file  typedef struct myStruct {      BIG[256][256];      int baz;  } myStruct;// in the c file  myStruct* foo;  foo = (myStruct*) malloc( sizeof(*foo) ); 
  4. 如何轻松转换malloc() 的返回值?在问题 #3 中,我写道:

    foo = (myStruct*) malloc( sizeof(*foo) );

    但我更喜欢这样写:

    foo = (foo) malloc( sizeof(*foo) );//编译器报错

    这将减轻编辑代码时的痛苦(当更改 foo 的类型时)。

英语不是我的母语,对于任何不清晰的地方,我深表歉意。

最佳答案

  1. 全局变量不是在堆栈上创建的。

  2. 见 1.

  3. 是。

  4. 您可以省略转换:

    foo = malloc( sizeof(*foo) );

关于c - 在 C 中减少堆栈负载、内存分配并轻松转换 malloc() 的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2012473/

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