malloc,calloc segment fault

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

猜你喜欢

转载自blog.csdn.net/m0_51156601/article/details/124111452