V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
b00tyhunt3r
V2EX  ›  C

惊了 这警告和 Segmentation fault: 11 是咋回事???????

  •  
  •   b00tyhunt3r · 2019-07-06 17:53:02 +08:00 · 4730 次点击
    这是一个创建于 1745 天前的主题,其中的信息可能已经有所发展或是发生改变。

    #include <iostream> using namespace std;</iostream>

    typedef struct test* t;
    struct test
    {
     int v;
     struct test* next;
    };
    
    int main()
    {
      t a;
      a->v=1;
      a->next =nullptr;
        }
    

    编译居然莫名其妙报了一个警告:

    test.cpp:18:3: warning: variable 'a' is uninitialized when used here [-Wuniniti
    alized]

    a->v=1;

    ^

    test.cpp:14:6: note: initialize the variable 'a' to silence this warning

    t a;

    ^

    = NULL

    1 warning generated.

    好吧 如他所愿改成

    t a=NULL;
    

    结果看的我直接迷了,Segmentation fault:11

    ????????

    ashong
        1
    ashong  
       2019-07-06 17:55:39 +08:00 via iPhone
    对象不 new 当然 sf 了
    owt5008137
        2
    owt5008137  
       2019-07-06 17:58:43 +08:00 via Android
    a 都没赋值过就直接用了,当然警告了
    wevsty
        3
    wevsty  
       2019-07-06 17:59:39 +08:00
    a 只是个指针,没初始化不知道指向的是什么玩意,就这样赋值当然会 Segmentation fault
    owt5008137
        4
    owt5008137  
       2019-07-06 18:00:33 +08:00 via Android
    赋值 NULL 话就变成 a-v=1 ;尝试对 0x00-0x04 进行写入,当然 segment fault 了
    littlewing
        5
    littlewing  
       2019-07-06 18:00:51 +08:00 via iPhone
    先买本 c 程序设计语言打好基础再来写代码,现在的年轻人啊,还没学会走就想跑了 https://item.m.jd.com/product/12580612.html?wxa_abtest=o&utm_source=iosapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=CopyURL&ad_od=share
    glacer
        6
    glacer  
       2019-07-06 18:02:27 +08:00
    t a = malloc(sizeof(struct test));
    bumz
        7
    bumz  
       2019-07-06 18:31:15 +08:00 via iPhone
    亲,您访问 NULL 上的字段是想做什么?让女朋友怀孕?让小行星撞地球?还是冰川融化吞没大陆

    报错 Segment fault 只是所有这些结果里面最温柔的一个

    未定义行为了解下。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5467 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 07:22 · PVG 15:22 · LAX 00:22 · JFK 03:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.