【转】小论野指针

2019-07-19 13:56发布

      在编写C语言程序时,我们很多程序的bug都是因为野指针造成的。那么今天我就简单地说说野指针。
野指针是指向“垃圾”内存的指针,出现在c和c++中,因为c和c++是没有自动内存垃圾回收功能的高级语言。
     野指针是随机指向一块内存的指针,该指针所要访问的空间可能没有因为没有申请访问而受限的空间,或者是指向已经释放的空间。
     那么我们该如何避免野指针呢?毋庸置疑,我们只能通过养成良好的编程习惯来避免。当我们在定义一个指针时,但不知道要指向什么的时候,我们应该将其赋值为NULL。但是我们为什么要在初始化的时候对指针置NULL呢?NULL在程序编写的界面中显示的是显眼的红 {MOD},可以提醒我们,要时刻留意不能访问NULL指针,或者对其进行赋值,同时如果在编译的时候出现段错误,也方便调试。当我们向一个指针指向的空间赋值时,要先检查其是否分配到合法的空间,如果没有就需要通过malloc()函数进行空间分配。要注意malloc的返回值是void *类型的,而且指针之间的赋值必须是相同类型之间的指针赋值,否则会出现越界或数据取的不完整的后果。malloc用完后,要检查malloc是否分配到了空间。
[objc] view plain copy


  • <pre name="code" class="objc">if(NULL == ptr)  
  • {  
  •     printf("malloc error! ");  
  •     exit(1);  
  • }  




使用完指针后,应该释放指针所指向的内存,再置NULL
0条回答

一周热门 更多>