您的位置:首页 > 其它

如何避免野指针?

2016-07-19 14:40 232 查看
野指针是指随机访问了内存空间,归根到底是由于不良的编码习惯,有个良好的编程习惯是避免“野指针”的唯一方法。

如何避免野指针:

1)初始化:char*p = NULL;(为何赋值为NULL:一是NULL是一个宏,高亮,检查段错误的时候比较显眼。二是NULL为值,不能对NULL值赋值或者访问。)

2)对指针赋值时,先检查是否分配内存,如果没有分配空间,用malloc分配内存。

 如:Char  *ptr

Ptr =  (char *)malloc(sizeof(char)*100);

3)malloc的返回值为void *,因为为char型指针,所以malloc要强制转换为char
*型。虽然已经使用了malloc,但是也有没有分配成功的情况,要通过if(NULL
== ptr)来判断是否分配成功。

分配好内存之后,但是也不排除会分配一个刚配释放的内存,所以需要清空缓冲区,通过memset函数或者bzero函数来清空。

Memset:

       Memset(ptr,0,sizeof(ptr)),这个用法是错的,ptr是指针,sizeof(ptr)为4个字节,而我们ptr该中往往不止4个字节。

        所以应该为(ptr , 0 , sizeof(ptr) * 100);这个是指ptr所指向的内存区中前N个字节用0字节填空。

 

Bzero:

Bzero(ptr,sizeof(char) * 100);这是说从ptr开始的100个字节全部置为0。

Memset与bzero的不同之处在于:memset可以用各种不同的值来填充,而bzero只能用0来填充。

4)清空完缓存之后就可以对这个指针赋值了

5)用完之后用free(ptr)来释放内存,同时还要对ptr赋NULL,即ptr
= NULL;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: