定义指针时未赋值导致出现“0xC0000005: 读取位置 0x00000000 时发生访问冲突”问题

问题描述:

0x0FB91BC0 (ucrtbased.dll)处(位于 five.exe 中)引发的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突。
在这里插入图片描述

emmm,这个问题呢,网上有很多解答,就是指针和数组越界的问题;

今天有个同学问我一个问题,就是碰见了这一串的0x00000000,我也是第一次碰见这玩意儿,上网搜了搜,原来是指针和数组越界了;

  • 道理是明白了,可是这几百来行的代码实在是看的人眼花缭乱,我不断的调啊调,终于将问题锁定在了strlen这里:
    在这里插入图片描述
  • 接着找到这个showText一看,得是个指针;
    在这里插入图片描述
  • 眼瞅着是没啥问题,可咋就一直报错呢?结果是她在主函数里调用了一个函数,又通过这个函数调用另一个函数,通过最后一函数使用了这个strlen(showText),这东跑西跑,突然出现错误就傻了😢;
  • 到中间一看,showText还是原来那个showText,一直到调用一点没变,最开始也没有赋值,就是个char *showText;,那可不就妥妥的得出错

定义showText时赋值,问题就解决了
定义指针时记得要赋值,路边的野花虽然香,但是不要随便采啊

我偶尔也这么定义指针,今天一看,这错误不大,但确实让人脑阔痛 所以在定义指针的时候,千万不要偷懒啊,不然到时候成百上千行代码,搁哪儿找这错误啊