C++在__strlen_avx2 ()处遇到段错误

2019-06-12  本文已影响0人  Glitter试做一号机

学弟跑B+树的测试遇到一个奇怪的段错误,出现在一个访问char**数组的时候,这个数组存储B+Tree的key,空间确实是已经初始化了,也确实打印了不是空指针,但是一访问就出错


访问key key数组确实是初始化过了

用gdb跑了一下,发现出错在__strlen_avx2 ()这个地方


__strlen_avx2 ()错误

然后搜这个问题发现一个出现这个问题的原因,其中一条就是使用了没有'\n'结束的字符串


segmentfault上的解答

然后看函数定义,发现InsertIndex函数接收参数是string类型,而传入的是char类型,这里就会要求做一个强制的类型转换,但是问题在于这个char没有\n结尾,有没有传入char*的长度,所以就会出现这个问题。

所以char*和string混用的时候害得注意一下,以及再次怀念一下rust的类型检查

上一篇下一篇

猜你喜欢

热点阅读