如何解决c或者c++中指针没有初始化的问题


  这里说的没有初始化是指连NULL都没有赋废了问题。

  很多时候,一不小心,我们就会犯以下错误:

struct listNode

{

  int value;

  listNode *next;

};

在后面使用时,我们只使用了

 listNode **p;
却并没有进行初始化甚至连p=NULL,或者*p=NULL都没有作。这时候,当别人调用这个函数的时候,尽管做了检查:

if(p == NULL || *p == NULL)
{
.....
}
但几乎我们都知道,这是没用的,因为此时p指向的一个不确定的值,而非NULL(0)!!

显然,后果是严重的。

怎么克服呢?

查看了许多网上的文章,基本都不具备可移植性。如:使用断言,增加一个参数来判断,或者某些编译器会有特定的为这些未初始化的指针赋的初值。。。。

在这个帖子中:http://bbs.csdn.net/topics/30204717

大家讨论得很好。

总结有以下几点:

1、程序设计是协作的工作,可以是接口和接口,也可以是不同的程序员之间。所以可以提出一部分要求给其他接口或编程人员。把精力放在主要的方面。

2、建立一个良好的一个代码规范,来防止这类事情的发生。

3、如果是给第三方提供接口,更要保持接口干净,同时可以注明借口调用条件,这些都是必需的,如果别人调用接口传入非初始化指针,同样那是他的问题。

4、在debug模式下打开visual2008编译器开关

编译器开关功能介绍:http://blog.csdn.net/danxuezx/article/details/5130358

具体在:项目-》属性下。如下图所示:

设置完成,就可以了。

5、当然是内存监测工具和调试了。

就写到这里吧

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值