今天用C语言写了一个小程序,但无法正确释放内存。程序如下:
#include <stdio.h>
#include <stdlib.h>
typedef struct stu {
char name;
int age;
char sex;
} stu;
stu get() {
stu* p = (stu*)malloc(sizeof(stu));
p->name = 'A';
return *p;
}
void freestu(stu p) {
free(&p);
}
int main() {
stu s1 = get();
printf("name:%c\n",s1.name);
freestu(s1);
return 0;
}
在Linux编译结果如下:
运行出现错误:
谁知道为什么?
求解。