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;
}