一个关于结构体的问题

typedef struct tagNODE

{

      char *a;

      int b;

} NODE;

 

NODE iNode;

 

定义一个这样的结构体变量后,偶就很郁闷了,因为不知道iNode.a是否申请过内存,使用的时候总是提心吊胆的,我按照如下的方法来使用这个变量:

 

switch(message)

{

      case MSG_CREATE:

      {

            iNode.a = NULL;

      }

      break;

 

      case MSG_...:

      {

            if(iNode.a != NULL)

            {

                  free(iNode.a);

                  iNode.a = NULL;

            }

 

            iNode.a = (char *)malloc(length);

      }

      break;

 

      case MSG_CLOSE:

      {

             if(iNode.a != NULL)

             {

                    free(iNode.a);

                    iNode.a = NULL;

             }

      }

      break;

}

 

就目前来看,在本模块使用时是不会有问题的,能够保证内存的正常释放和使用,但是问题是其它模块也使用这个变量,且如果其它模块在本模块前面跑,则iNode.a的值将是一个不可知的值,有严重的隐患。

 

最后想到了这样的一个方法

NODE *iNode = NULL;

这样就可以判断是否被初始化了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值