可能堆腐败,但它可能是别的东西?
我有以下在多线程环境中运行的c ++代码:
A* a = (A*) (_x->b); a->DoStuff();
A
是一个具体的类, _x
是A
的成员(比方说X*
类型), b
是void *
。
另外, this
也是一个A*
,它具有不同的内存位置,但与转储显示的_x->b
相似的数据。
我在解除引用时遇到了莫名其妙的崩溃。 生成的转储文件非常详细,它告诉我_x
处于良好状态, _x->b
指向有效的非零内存地址。 转储还显示,在第二个语句中, a
是0,这是首先发生崩溃的原因。
我的问题:这次崩溃的原因是一个确定的堆腐败,或者它可能是更基础的东西? 我打算使用gflags或valgrind等堆跟踪工具进行调试,但我很好奇,是否有任何其他原因,看似有效的指针在C风格转换后会以某种方式变为空值。
链接地址: http://www.djcxy.com/p/14447.html上一篇: Probably heap corruption, but could it be something else?
下一篇: C++ Heap Corruption