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/