[英]C++ QT Exception code 0xc0000005 read access violation at: 0x0, flags=0x0
所以这是问题所在:我使用 QT 创建一个 GUI 应用程序,我需要一些线程同时执行一些操作并在 QTextEdit 中打印结果。
#include <QWidget>
#include <QThread>
#include <thread>
#include <cstdlib>
#include <QApplication>
#include <QTextEdit>
#include <QFuture>
#include <QtConcurrent/qtconcurrentrun.h>
#include <iostream>
#include <Windows.h>
using namespace std;
class Win_test : public QWidget
{
private:
QTextEdit *text_panel;
public:
QTextEdit* getPanel();
Win_test();
~Win_test();
};
QTextEdit* Win_test::getPanel() { return text_panel; }
void Thread_test(QTextEdit* where)
{
for( int i = 0 ; i < 90 ; i++ )
{
Sleep(100);
where->append("Hello\n");
}
}
Win_test::Win_test()
{
text_panel = new QTextEdit;
text_panel->setReadOnly(true);
text_panel->setParent(this);
}
Win_test::~Win_test() {}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
try
{
Win_test *win_test = new Win_test;
QFuture<void> f1 = QtConcurrent::run(Thread_test, win_test->getPanel());
win_test->show();
} catch(exception e)
{
cout << e.what() << endl;
}
return app.exec();
}
当我运行此代码时,有时它可以工作并且我得到正确的结果,有时它会崩溃,当我在调试模式下运行它时它会说:
下级停止了,因为它触发了异常。 在线程 0 中停止的原因是:0x7ffdcd89cefa 处的异常,代码:0xc0000005:0x0 处的读取访问冲突,标志 = 0x0(第一次机会)。
如果有人可以帮助我或遇到此问题,我将不胜感激。 他们说这个问题通常是由于一些没有初始化但我不知道它来自哪里的东西。
所以这是问题所在:我使用 QT 创建一个 GUI 应用程序,我需要一些线程同时执行一些操作并在 QTextEdit 中打印结果。
#include <QWidget>
#include <QThread>
#include <thread>
#include <cstdlib>
#include <QApplication>
#include <QTextEdit>
#include <QFuture>
#include <QtConcurrent/qtconcurrentrun.h>
#include <iostream>
#include <Windows.h>
using namespace std;
class Win_test : public QWidget
{
private:
QTextEdit *text_panel;
public:
QTextEdit* getPanel();
Win_test();
~Win_test();
};
QTextEdit* Win_test::getPanel() { return text_panel; }
void Thread_test(QTextEdit* where)
{
for( int i = 0 ; i < 90 ; i++ )
{
Sleep(100);
where->append("Hello\n");
}
}
Win_test::Win_test()
{
text_panel = new QTextEdit;
text_panel->setReadOnly(true);
text_panel->setParent(this);
}
Win_test::~Win_test() {}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
try
{
Win_test *win_test = new Win_test;
QFuture<void> f1 = QtConcurrent::run(Thread_test, win_test->getPanel());
win_test->show();
} catch(exception e)
{
cout << e.what() << endl;
}
return app.exec();
}
当我运行此代码时,有时它可以工作并且我得到正确的结果,有时它会崩溃,当我在调试模式下运行它时它会说:
下级停止了,因为它触发了异常。 在线程 0 中停止的原因是:0x7ffdcd89cefa 处的异常,代码:0xc0000005:0x0 处的读取访问冲突,标志 = 0x0(第一次机会)。
如果有人可以帮助我或遇到此问题,我将不胜感激。 他们说这个问题通常是由于一些没有初始化但我不知道它来自哪里的东西。
所以这是问题所在:我使用 QT 创建一个 GUI 应用程序,我需要一些线程同时执行一些操作并在 QTextEdit 中打印结果。
#include <QWidget>
#include <QThread>
#include <thread>
#include <cstdlib>
#include <QApplication>
#include <QTextEdit>
#include <QFuture>
#include <QtConcurrent/qtconcurrentrun.h>
#include <iostream>
#include <Windows.h>
using namespace std;
class Win_test : public QWidget
{
private:
QTextEdit *text_panel;
public:
QTextEdit* getPanel();
Win_test();
~Win_test();
};
QTextEdit* Win_test::getPanel() { return text_panel; }
void Thread_test(QTextEdit* where)
{
for( int i = 0 ; i < 90 ; i++ )
{
Sleep(100);
where->append("Hello\n");
}
}
Win_test::Win_test()
{
text_panel = new QTextEdit;
text_panel->setReadOnly(true);
text_panel->setParent(this);
}
Win_test::~Win_test() {}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
try
{
Win_test *win_test = new Win_test;
QFuture<void> f1 = QtConcurrent::run(Thread_test, win_test->getPanel());
win_test->show();
} catch(exception e)
{
cout << e.what() << endl;
}
return app.exec();
}
当我运行此代码时,有时它可以工作并且我得到正确的结果,有时它会崩溃,当我在调试模式下运行它时它会说:
下级停止了,因为它触发了异常。 在线程 0 中停止的原因是:0x7ffdcd89cefa 处的异常,代码:0xc0000005:0x0 处的读取访问冲突,标志 = 0x0(第一次机会)。
如果有人可以帮助我或遇到此问题,我将不胜感激。 他们说这个问题通常是由于一些没有初始化但我不知道它来自哪里的东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.