快速变化的QLineEdit崩溃应用程序

快速变化的QLineEdit崩溃应用程序

问题描述:

我有三个QLineEdit字段,其内容变化非常快(100 /秒)。 不知何故,它崩溃的应用程序。也许这是一个错误,或者我犯了一个错误。快速变化的QLineEdit崩溃应用程序

下面是一些代码:

acc[0]->setText(QString("%1").arg(acceleration.x)); 
acc[1]->setText(QString("%1").arg(acceleration.y)); 
acc[2]->setText(QString("%1").arg(acceleration.z)); 

调用堆栈:http://pastebin.com/RmkZHTjk

有时我得到这个错误:

Unhandled exception at 0x6518cbb3 (QtGuid4.dll) in Test.exe: 0xC0000005: Access violation reading location 0x0000002c.

调用堆栈是:http://pastebin.com/c1u53a0Z

我用QLabel试了一下,然后我得到另一个错误:

Unhandled exception at 0x751a9617 in Test.exe: Microsoft C++ exception: std::bad_alloc at memory location 0x03aeea70..

调用堆栈:http://pastebin.com/G4yeiW2Y

+0

@RolandSoós:您是否尝试过使用代码做一些更改?例如,'setText()'只有一个'QLineEdit',或者而不是'QLineEdit'使用'QLabel'?有趣的是,结果会是什么......是否真的需要用这个速度打印加速度值? – mosg 2010-08-26 05:13:06

+0

您是否以较慢的速度尝试跟踪回溯的弦(或者只是一个单行?)?此外,回溯多久?有时堆栈溢出会导致Qt深处的崩溃,并且一个人挠了挠头,直到他注意到堆栈的大小。 – 2010-08-26 08:28:37

+0

是的,我试过用QLabel,然后我得到了另一个错误。我已将此信息添加到问题中。我试图将其限制在10转/秒。它在6%的处理器使用情况下运行良好。在100change/sec的处理器使用率是50%(我有2个核心)。 – 2010-08-26 08:31:02

让我们得到这个关闭。这是弗兰克一周前发表评论的答案。

@RolandSoós:它看起来像我从非UI线程调用setText()。这是行不通的,QWidgets不是线程安全的。 - Frank