免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345下一页
最近访问板块 发新帖
查看: 32238 | 回复: 40
打印 上一主题 下一主题

如何判断指针指向的内存是否被释放掉 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-28 17:05 |只看该作者 |倒序浏览
比如:
     char * p = malloc(10);
        free(p);
       下面我如何判断p指向的空间是否被释放呢?

论坛徽章:
0
2 [报告]
发表于 2006-04-28 17:07 |只看该作者
检查返回值 -1 为错

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2006-04-28 17:08 |只看该作者
不用判断。free 是没有返回值的。

论坛徽章:
0
4 [报告]
发表于 2006-04-28 17:11 |只看该作者
我的意思不是free是否成功。我的意思是比如有多个指针同时指向了一块内存,然后通过一个指针将其释放,这样我如何根据另外的指针判断出这块内存已经释放呢?
比如:
    char *p = malloc(10);
      char * pp = p;
      free(p);
      下面我如何根据PP来判断这块内存是否被释放呢?

论坛徽章:
0
5 [报告]
发表于 2006-04-28 17:11 |只看该作者
哦,倒是没有仔细看过 free()定义

论坛徽章:
0
6 [报告]
发表于 2006-04-28 17:12 |只看该作者
原帖由 ericqxf 于 2006-4-28 17:11 发表
我的意思不是free是否成功。我的意思是比如有多个指针同时指向了一块内存,然后通过一个指针将其释放,这样我如何根据另外的指针判断出这块内存已经释放呢?
比如:
    char *p = malloc(10);
      char * p ...



没办法

论坛徽章:
0
7 [报告]
发表于 2006-04-28 17:30 |只看该作者
自定义一个函数来保证指针释放后为空

  1. void Free( char*& p )
  2. {
  3.         if( NULL != p )
  4.         {
  5.                 free( p );
  6.                 p = NULL;
  7.         }
  8. }

  9. int main()
  10. {
  11.         char *p = (char*)malloc(10);
  12.         Free( p );
  13.         char * pp = p;
  14. }
复制代码

[ 本帖最后由 isnowran 于 2006-4-28 17:43 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2006-04-28 17:33 |只看该作者
LZ能说说什么时候有这样的需求嘛?

free是自己控制的。当然,free两次后果非常严重。

论坛徽章:
0
9 [报告]
发表于 2006-04-28 17:33 |只看该作者
这是你编码风格不行,一般free后都会p=null;

论坛徽章:
0
10 [报告]
发表于 2006-04-28 20:37 |只看该作者
我觉得自己应该知道什么时候free,而不是象LZ说的那样连free都要显示地可靠进行

好象不会出现出现这样的情况。。不知道我理解有没有错误

比如:怎么知道我需要的缓冲区有没有malloc。实际上一个全局指针指向的缓冲区通常不会有两个函数去malloc

如果真有,向isnowran 说的那样进行吧。 也可以使用用一个函数的static变量去进行。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP