求助
#include<stdio.h>#include<stdlib.h>
#include<malloc.h>
int* fun(void);
int main(void)
{
int *a=fun();
a=3;
a=6;
a=9;
printf("%d %d %d",a,a,(fun()));
free(a);
system("pause");
return 0;
}
int* fun(void)
{
int *p=(int *)malloc(12);
return p;
}
printf("%d %d %d",a,a,fun);这里的(fun())与a不等价吗? 不等价,(fun()) 是重新申请了一块内存 不一样的。每次 malloc 都会重新申请一块新的内存。
也就是说,每次调用 fun 返回的都是不一样的内存。
fun 这种函数的返回值应该赋值后使用,且不再使用之后应该 free 掉。
页:
[1]