gpt4 book ai didi

c - 什么时候必须使用 malloc 分配内存?

转载 作者:太空狗 更新时间:2023-10-29 16:45:41 27 4
gpt4 key购买 nike

1)
我必须使用 malloc 为哪些数据类型分配内存?

  • 对于结构、指针等类型,除了基本数据类型,如 int
  • 对于所有类型?

2)
为什么我可以运行这段代码?为什么它不崩溃?我假设我需要先为结构分配内存。

#include <stdio.h>
#include <stdlib.h>

typedef unsigned int uint32;
typedef struct
{
int a;
uint32* b;
}
foo;

int main(int argc, char* argv[])
{
foo foo2;
foo2.a = 3;
foo2.b = (uint32*)malloc(sizeof(uint32));
*foo2.b = 123;
}

用起来不是更好吗

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

3)foo.b 是如何设置的?是引用随机内存还是 NULL?

#include <stdio.h>
#include <stdlib.h>

typedef unsigned int uint32;
typedef struct
{
int a;
uint32* b;
}
foo;

int main(int argc, char* argv[])
{
foo foo2;
foo2.a = 3;

}

最佳答案

C 中的所有类型都可以动态、自动(在堆栈上)或静态分配。问题不在于类型,而在于你想要的生命周期——当你希望一个对象存在于创建它的函数的范围之外时,或者当你事先不知道你需要多大的东西时,你可以使用 malloc。

关于c - 什么时候必须使用 malloc 分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3175885/

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