鱼C论坛

 找回密码
 立即注册
查看: 755|回复: 2

[已解决]求助

[复制链接]
发表于 2020-8-8 11:43:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
int* fun(void);
int main(void)
{
        int *a=fun();
        a[0]=3;
        a[1]=6;
        a[2]=9;
        printf("%d %d %d",a[0],a[1],(fun())[2]);
        free(a);
        system("pause");
        return 0;
}
int* fun(void)
{
        int *p=(int *)malloc(12);
        return p;
}



printf("%d %d %d",a[0],a[1],fun[2]);这里的(fun())[2]与a[2]不等价吗?
最佳答案
2020-8-8 11:58:40
不一样的。每次 malloc 都会重新申请一块新的内存。
也就是说,每次调用 fun 返回的都是不一样的内存。

fun 这种函数的返回值应该赋值后使用,且不再使用之后应该 free 掉。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-8 11:44:40 | 显示全部楼层
不等价,(fun())[2] 是重新申请了一块内存
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-8 11:58:40 | 显示全部楼层    本楼为最佳答案   
不一样的。每次 malloc 都会重新申请一块新的内存。
也就是说,每次调用 fun 返回的都是不一样的内存。

fun 这种函数的返回值应该赋值后使用,且不再使用之后应该 free 掉。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 07:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表