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;
这样就可以判断是否被初始化了。