免费注册 查看新帖 |

Chinaunix

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

C/C++如何判断一个指针有无指向有效空间? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-09 12:56 |只看该作者 |倒序浏览
C/C++如何判断一个指针有无指向有效空间?

论坛徽章:
0
2 [报告]
发表于 2008-03-09 13:00 |只看该作者
除了NULL以外不好检查.
指针要自己管好...

论坛徽章:
0
3 [报告]
发表于 2008-03-09 13:08 |只看该作者
这在C++里挺麻烦的,copy构造函数不太好控制啊
如何让谝译器初始化指针为NULL(就是0)呢?

比如像这样:

class base{
   int a;
   char *p; //<------------------
};



int main(){
   base b;

}

////这里面我希望谝译器可以自动把char *p 赋值为0,
//谝译器可以实现吗?

[ 本帖最后由 ljoo 于 2008-3-9 13:15 编辑 ]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2008-03-09 13:39 |只看该作者
这是一个错误的问题。

论坛徽章:
0
5 [报告]
发表于 2008-03-09 13:47 |只看该作者
虽然有些平台,提供类似IsBadPtr的api,但是作为一个c程序员,管理指针只是一项基本的能力.

论坛徽章:
0
6 [报告]
发表于 2008-03-09 13:52 |只看该作者
我问了两问题,哪个问题是错误的问题?
第一个问题基本解决了,答案就是:C/C++没办法解决这样的问题,
所以退一步第二个问题就产生了,一个递进关系,不算离谱吧

论坛徽章:
0
7 [报告]
发表于 2008-03-09 13:57 |只看该作者
原帖由 ljoo 于 2008-3-9 13:08 发表
这在C++里挺麻烦的,copy构造函数不太好控制啊
如何让谝译器初始化指针为NULL(就是0)呢?

比如像这样:

class base{
   int a;
   char *p; //


请参考:
The C++ Programming Language
10.4.4.1 对象的复制
10.5 忠告 (10, 11)

我也懒得抄了,贴图。

TC++PL.png (67.66 KB, 下载次数: 45)

10.4.4.1 对象的复制

10.4.4.1 对象的复制

论坛徽章:
0
8 [报告]
发表于 2008-03-09 14:01 |只看该作者
原帖由 agaric 于 2008-3-9 13:47 发表
虽然有些平台,提供类似IsBadPtr的api,但是作为一个c程序员,管理指针只是一项基本的能力.


别人调用你写的函数,丢一个野指针进来, 现象是你的函数挂了,你如何办?

论坛徽章:
3
天蝎座
日期:2014-10-25 13:44:312015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:48:31
9 [报告]
发表于 2008-03-09 14:08 |只看该作者
原帖由 ljoo 于 2008-3-9 14:01 发表


别人调用你写的函数,丢一个野指针进来, 现象是你的函数挂了,你如何办?



除了能判断NULL,我还能揍他,仅仅是个建议。:)

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
10 [报告]
发表于 2008-03-09 14:45 |只看该作者
原帖由 ljoo 于 2008-3-9 14:01 发表

别人调用你写的函数,丢一个野指针进来, 现象是你的函数挂了,你如何办?

1,核对文档,划分责任。
2,看挂了之后,受害的一方是谁,如果是他,那挂就挂了,无所谓。如果是你,那说明你的函数有漏洞。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP