我有一堂课,我分配了一些内存。例如:
class image {
public:
image(){
pixelvalue = 0;
}
void formatandcopy() {
pixelvalue = new int [10000*50000];
if(pixelvalue)
qDebug()<<"allocation successful";
else
qDebug()<<"allocation failed";
}
private:
int *pixelvalue;
};
当我调用formatandcopy()
程序时会抛出这个:
Qt has caught an exception thrown from an event handler. Throwing
exceptions from an event handler is not supported in Qt. You must
reimplement QApplication::notify() and catch all exceptions there.
任何人都知道我可以如何防止这种情况并让用户知道它只是内存不足?当我运行它时,它甚至不显示allocation failed
。qDebug()
在调用之前会抛出上述错误。如果分配的内存量减少,程序运行良好。new
我认为这很奇怪,因为在使用运算符而不是 qt 函数时会引发此错误。此外,我的机器还有足够的内存。我认为这是 qt 将其程序限制在某个堆空间的结果。最后,如果我可以通过确实重新实现该notify
功能来解决这个问题,那么任何人都可以指出我正确的方向来做到这一点吗?