• 指针二次理解(第三篇)如何安全的使用指针


     

    五、             如何安全的使用指针

    指针不可乱用

    安全的使用指针需要对指针有足够清楚的认识

    使用指针之前,一定要弄清楚两个问题:

       1.这个指针指向了哪里?

    指针只允许指向两个地方

    1)         指向了变量、数组

    代码走起

    int n;

    int* p = &n;               //p指向的内存:一个变量

    int arr[4];

    int* p2 = arr;             //p指向的内存:一个数组

    2)         指向0

    代码走起

    int* p = 0;                   //空指针

    当一个指针未赋值时,其值为随机值,此时值指向了一个随机的内存地址。称为“野指针”(wild pointer)

       2.空指针

    值为0的指针,为空指针

    int* p = 0;

    当指针为空时,不能使用星号操作。

    int* p = 0;

    printf( "%d        " , *p );          //错误 崩溃

    但空指针是一种可以接受的情况,只需要加一个if判断就能解决,

    if( p )

    {

             printf( "%d        " , *p );

    }

       3.严防数组越界

    当指针指向数组时,要注意不要越界访问

    代码走起

    int arr[4];

    int* p =arr;

    p += 4;

    *p = 12;             //已经越界,但不易察觉

      4.指向的变量是否已经失效

    如果指向的目标的生命期已经终结(失效),则指针也失效

    代码走起

    int main()

    {

          int* p = 0;

    if(1)

    {

    int* p = 10;                //a生效

    p = &a;              //p指向a

    }

    *p = 11;             //p指向了一个无效的位置  错误

    return 0;

    }

  • 相关阅读:
    作业5:扒开系统调用的三层皮(下) 20135115臧文君
    课本学习笔记2:第五章 20135115臧文君
    Linux及安全实践二
    Linux内核分析 期中总结
    Linux内核分析08
    Linux内核分析07
    Linux内核分析06
    Linux内核分析 05
    Linux内核分析04
    Linux内核分析 03
  • 原文地址:https://www.cnblogs.com/zzhua/p/5940056.html
Copyright © 2020-2023  润新知