#include<stdio h=""> void func(int *p) { int *c = p; printf("%d\n",c[0]); //free(c);//这里最好不要释放,因为不是函数func申请的,不然会造成多次释放一块内存 } int main() { int *b = (int*)malloc(3*sizeof(int)); //main函数中申请了内存 *b = 100; func(b); free(b); //在main函数中对内存进行释放 return 0; } //倘若非要在在fun中释放,那么就要在main函数中另外申请一块。 //但是不合符谁申请谁释放的原则。不过这种情况在实际中会出现 #include<stdio h=""> void func(int *p) { int *c = p; printf("%d\n",c[0]); free(c);//释放main函数中的临时变量 } int main() { int *b = (int*)malloc(3*sizeof(int)); //main函数中申请了内存b *b = 100; //重新申请一块临时的变量 int *temp = (int*)malloc(3*sizeof(int)); temp = b; func(temp); free(b); //在main函数中对内存进行释放b return 0; } </stdio></stdio>