遇到的问题:异常: 0xC0000005: 读取位置 0xFFFFFFFFFFFFFFFF 时发生访问冲突。
参考资料:https://blog.csdn.net/wangshubo1989/article/details/50135673
解决方案:这个错误是由于指针的内存分配不对引起的,检查了代码,发现有个指针重复定义,使用的内存超过了给他分配的内存,导致这个指针存储地址之后的指针的地址出错,从而引起错误。
//打印图像
PrintImageAction = new QAction(QIcon("PrintImage.png"), tr("打印图像"), this);
PrintImageAction->setStatusTip(tr("打印图像"));
//打印文本
PrintImageAction = new QAction(QIcon("PrintText.png"), tr("打印文本"), this);
PrintImageAction->setStatusTip(tr("打印文本"));
如代码所示,C++给同一个指针在初始化时候分配了固定的内存,而我重复初始化分别存了不同的数据进去。C++默认的是先存了第一个初始化时候的值,然后存第二个初始化值。假设第一次初始化时候分配的内存是1000,内存开始位置为0000,结束位置为1000。这1000全部用来存了pringtImage,之后为了存printText,占用了1000个内存。即pringImageAction指针实际占用内存为2000。下一个指针的起始位置为1001,结束位置为2000。然而这个内存位置已经被printImage占用,就会出现0xC0000005错误。