malloc,calloc的一个小问题
下面的代码会报错:
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int *buf;
} sbuf;
int main() {
sbuf* S = NULL;
S -> buf = (int *)malloc(10 * sizeof(int));
}
原因就是这是结构体初始化的问题,这是一个野指针。S没有指向任何的具体的结构体。
正确做法:
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int *buf;
} sbuf;
int main() {
sbuf* S = (sbuf *)malloc(1); // 分配一块结构体空间
S -> buf = (int *)malloc(10 * sizeof(int));
}