1.动态创建一个结构体,里面有指针,为指针对象创建内存
结构体定义
#define MAX 30
typedef struct {
char *name;
int age;
}Student;
//动态为*stu分配num个内存
int tcalloc(Student **stu, int num){
if (stu == NULL || num <= 0) {
return -1;
}
Student *stu_in = calloc(num, sizeof(Student));
if (stu_in == NULL) {
fprintf(stderr, "分配内存错误");
return -1;
}
for (int i = 0; i < num; i++) {
//为结构体中的name指针分配内存
(stu_in + i)->name = calloc(MAX, sizeof(char));
strcpy((stu_in + i)->name, "hahha");
(stu_in + i)->age = i + 1;
}
*stu = stu_in;
return 0;
}
释放结构体
int free_struct(Student ** stu, int num){
if (stu == NULL) {
return -1;
}
for (int i = 0; i < num; i++) {
if (((*stu)+ i) != NULL && ((*stu)+ i)->name != NULL ) {
free(((*stu)+ i)->name);
}
}
free(*stu);
*stu = NULL;
return 0;
}