Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CrtCheckMemory有多可靠?_C++_Qt_Heap_Corruption - Fatal编程技术网

C++ CrtCheckMemory有多可靠?

C++ CrtCheckMemory有多可靠?,c++,qt,heap,corruption,C++,Qt,Heap,Corruption,我有一些奇怪的堆损坏,并试图使用CrtCheckMemory发现它 如果一个_CrtCheckMemory函数返回true,是否表示内存*100%正常? 我认为当它返回false时,很明显,然后内存中出现了一些错误 有关守则如下: assert( _CrtCheckMemory() ); renderText( x + (max_height/4.0) * w, y + (fm.descent() + (label.shadedText ? 1.0 : 0.0)) * h, 0.0, label

我有一些奇怪的堆损坏,并试图使用CrtCheckMemory发现它

如果一个_CrtCheckMemory函数返回true,是否表示内存*100%正常?

我认为当它返回false时,很明显,然后内存中出现了一些错误

有关守则如下:

assert( _CrtCheckMemory() );
renderText( x + (max_height/4.0) * w, y + (fm.descent() + (label.shadedText ? 1.0 : 0.0)) * h, 0.0, label.text, label.font );
assert( _CrtCheckMemory() );
第一个调用返回true,但第二个调用返回false。 renderText是一个QGLWidget::renderText调用,在调用renderText之前和之后,label都是有效的对象


*:我指的是我的经验中的堆

,\u Crt。。。调试函数工作得很好,但重量很轻,因此不是万无一失的。您应该在fm.description()内部推送测试。

fm.description()是QFontMetricsF的成员。所以我无法控制它,但尝试了你用不同的方法说的话。用一个常量替换了fm.descent调用,但问题仍然存在。我正在考虑将此报告给Qt,但我不确定这是否真的是他们的问题,或者我犯了一些错误..可能label.text包含外来编码文本或转义字符,如换行符?用文本替换label.text怎么样,比如“test”。如果这仍然失败,您最后的机会将是向Qt开发人员报告……有趣的是,有特殊字符要显示,但它们显示得很好,特别是当需要渲染简单的“Th.2.6”字符串时。我想你是对的,我会向Qt报告的。感谢您的反馈。:)如果有人对此感兴趣或遇到同样的问题,我会向Qt报告。您可以通过此链接进行跟踪:为什么您确信
renderText
函数内部没有发生损坏?因为第一次调用“\u CrtCheckMemory”返回true,这意味着堆很好,第二次调用返回false。在两个堆检查之间,只有renderText函数。尽管这一理论是基于_crtcheck存储器的可靠性。