zoukankan      html  css  js  c++  java
  • C语言中全局结构体指针隐含的错误

      前天在嵌入式系统上,调试一个数组的全局变量时,发现该变量一直会动态变化。深入分析,

    才发现该全局结构体没有申请内存,而是用了一个指针。这种情况编译器是检查不出来的,在linux

    上运行会挂掉,但是在裸系统上运行不会挂死。

      错误的例子:

    #include <stdio.h>
    typedef struct
    {
            int testa;
            int testb;
    }str_test;
    
    str_test* g_str_test;
    
    int main()
    {
            g_str_test->testa = 10;
            printf("testa:%d 
    	",g_str_test->testa);
            printf("testb:%d 
    	",g_str_test->testb);
    }  

      正确的方法:

      

    #include <stdio.h>
    typedef struct
    {
            int testa;
            int testb;
    }str_test;
    
    str_test g_s_test;
             
    int main()
    {            
            g_s_test.testa = 10; 
            printf("testa:%d 
    	",g_s_test.testa);
            printf("testb:%d 
    	",g_s_test.testb);
    } 

      总结反思:C语言是很博大精深的,里面很多东西要深入的研究。要达到滚瓜烂熟的境界。

  • 相关阅读:
    解决shiro多次从redis读取session的问题
    软件测试其他方法
    异常HTTP Status 500
    支付
    java面试
    SQL入门
    软件测试理论基础
    软件测试学习第一章
    Linux在终端命令行模式下智能补全功能以及组合键
    Linux安装
  • 原文地址:https://www.cnblogs.com/dylancao/p/8026467.html
Copyright © 2011-2022 走看看