定义指针时未赋值导致出现“0xC0000005: 读取位置 0x00000000 时发生访问冲突”问题
问题描述:
0x0FB91BC0 (ucrtbased.dll)处(位于 five.exe 中)引发的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突。
emmm,这个问题呢,网上有很多解答,就是指针和数组越界的问题;
今天有个同学问我一个问题,就是碰见了这一串的0x00000000,我也是第一次碰见这玩意儿,上网搜了搜,原来是指针和数组越界了;
- 道理是明白了,可是这几百来行的代码实在是看的人眼花缭乱,我不断的调啊调,终于将问题锁定在了
strlen
这里: - 接着找到这个showText一看,得是个指针;
- 眼瞅着是没啥问题,可咋就一直报错呢?结果是她在主函数里调用了一个函数,又通过这个函数调用另一个函数,通过最后一函数使用了这个
strlen(showText)
,这东跑西跑,突然出现错误就傻了????; - 到中间一看,showText还是原来那个showText,一直到调用一点没变,最开始也没有赋值,就是个
char *showText;
,那可不就妥妥的得出错
在定义showText时赋值,问题就解决了
定义指针时记得要赋值,路边的野花虽然香,但是不要随便采啊
结
我偶尔也这么定义指针,今天一看,这错误不大,但确实让人脑阔痛
所以在定义指针的时候,千万不要偷懒啊,不然到时候成百上千行代码,搁哪儿找这错误啊