鱼C论坛

 找回密码
 立即注册
查看: 661|回复: 5

[已解决]对于内存释放的疑问

[复制链接]
发表于 2022-3-24 23:35:04 | 显示全部楼层 |阅读模式

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

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

x
比如下边代码
是不是free(b)语句多余了
我想的是a,b都指向了同一个地址,释放a相当于把b也一起释放了
#include <iostream>

using namespace std;

int main()
{
        int* a = (int*)malloc(sizeof(int));
        int* b = (int*)malloc(sizeof(int));
        *a = 1;
        *b = 2;
        
        a = b;
        
        free(a);
        free(b);
        return 0;
}
最佳答案
2022-3-25 00:17:44
大马强 发表于 2022-3-25 00:04
咋写呢?
我感觉b的不是也一起释放了吗
                int *temp;
        int* a = (int*)malloc(sizeof(int));
        int* b = (int*)malloc(sizeof(int));

        *a = 1;
        *b = 2;
        
                temp = a; // 保存 a 的地址
        a = b; // a 现在存的是 b的地址
        
        free(a);
        free(temp);

        return 0;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-24 23:49:28 | 显示全部楼层
确实多余,不过你还是要一个中间指针来释放原来的b
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-25 00:04:09 | 显示全部楼层
ba21 发表于 2022-3-24 23:49
确实多余,不过你还是要一个中间指针来释放原来的b

咋写呢?
我感觉b的不是也一起释放了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-25 00:17:44 | 显示全部楼层    本楼为最佳答案   
大马强 发表于 2022-3-25 00:04
咋写呢?
我感觉b的不是也一起释放了吗
                int *temp;
        int* a = (int*)malloc(sizeof(int));
        int* b = (int*)malloc(sizeof(int));

        *a = 1;
        *b = 2;
        
                temp = a; // 保存 a 的地址
        a = b; // a 现在存的是 b的地址
        
        free(a);
        free(temp);

        return 0;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-25 00:23:51 | 显示全部楼层
      两次执行 malloc() 分配了 2 块内存空间,其句柄分别对应于指针变量 a 和 b,使用完毕后,应该通过 free(a)、free(b) 来释放这两块内存空间。但是,在内存空间还没有得到释放的时候,执行了 a = b,那么,句柄 a 就被丢失掉了,就是说,句柄 a 对应的内存空间因为丢掉了内存地址而无法访问,当然,也无法进行释放。

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
大马强 + 5 + 5 懂了懂了,谢谢大佬

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-25 07:12:19 From FishC Mobile | 显示全部楼层
free a
a=b
free b

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
大马强 + 5 + 5

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 05:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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