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语言是很博大精深的,里面很多东西要深入的研究。要达到滚瓜烂熟的境界。

  • 相关阅读:
    测试方法与步骤
    团队项目需求分析
    第一次个人作业
    3种shell自动交互的方法
    mysql用户管理
    build web application with golang
    安卓中的LINUX内核
    结对项目小结
    关于aria2-yaaw下载软件
    软工结对项目预览
  • 原文地址:https://www.cnblogs.com/dylancao/p/8026467.html
Copyright © 2011-2022 走看看