晓觉懿 发表于 2020-8-8 11:43:56

求助

#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不等价吗?

zltzlt 发表于 2020-8-8 11:44:40

不等价,(fun()) 是重新申请了一块内存

永恒的蓝色梦想 发表于 2020-8-8 11:58:40

不一样的。每次 malloc 都会重新申请一块新的内存。
也就是说,每次调用 fun 返回的都是不一样的内存。
fun 这种函数的返回值应该赋值后使用,且不再使用之后应该 free 掉。
页: [1]
查看完整版本: 求助