构造函数中大小为 4 的写入无效
Invalid write of size 4 in constructor
我正在使用Qt5。在我正在编写的程序中,我有一个带有非常简单构造函数的类。问题是,当我检查Valgrind的问题时,我在每次作业中都会收到"无效的大小写入"。
这是标头:
#ifndef RS22812_H
#define RS22812_H
#include <QObject>
class RS22812 : public QObject
{
Q_OBJECT
public:
explicit RS22812(QObject *parent = 0);
~RS22812();
private:
uint mode;
Flags flags;
QString byte2Digit(uchar byte);
signals:
void modeChanged(uint newmode);
public slots:
void newValue(const QByteArray &data);
};
#endif // RS22812_H
以及 cpp 文件中的构造函数定义:
RS22812::RS22812(QObject *parent) : QObject(parent)
{
mode=0;
}
Valgrind 在 QObject(parent( 和 mode=0 上都给了我错误:
Invalid write of size 4
in RS22812::RS22812(QObject*) in /home/javi/ProgrammingProjects/multimeterGUI/rs22812.cpp:4
1: RS22812::RS22812(QObject*) in /home/javi/ProgrammingProjects/multimeterGUI/rs22812.cpp:4
2: MainWindow::MainWindow(QWidget*) in /home/javi/ProgrammingProjects/multimeterGUI/mainwindow.cpp:29
3: main in /home/javi/ProgrammingProjects/multimeterGUI/main.cpp:7
Address 0x1c4ad500 is 0 bytes after a block of size 16 alloc'd 1: operator new(unsigned long) in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so
2: MainWindow::MainWindow(QWidget*) in /home/javi/ProgrammingProjects/multimeterGUI/mainwindow.cpp:29
3: main in /home/javi/ProgrammingProjects/multimeterGUI/main.cpp:7
Invalid write of size 4
in RS22812::RS22812(QObject*) in /home/javi/ProgrammingProjects/multimeterGUI/rs22812.cpp:6
1: RS22812::RS22812(QObject*) in /home/javi/ProgrammingProjects/multimeterGUI/rs22812.cpp:6
2: MainWindow::MainWindow(QWidget*) in /home/javi/ProgrammingProjects/multimeterGUI/mainwindow.cpp:29
3: main in /home/javi/ProgrammingProjects/multimeterGUI/main.cpp:7
Address 0x1c4ad500 is 0 bytes after a block of size 16 alloc'd 1: operator new(unsigned long) in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so
2: MainWindow::MainWindow(QWidget*) in /home/javi/ProgrammingProjects/multimeterGUI/mainwindow.cpp:29
3: main in /home/javi/ProgrammingProjects/multimeterGUI/main.cpp:7
我不明白这么简单的作业怎么会导致错误。感谢您的建议。
在尝试了几件事之后,问题似乎出在QtCreator上。当我清理项目时,它编译没有问题。
相关文章:
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 声明为无效的变量或字段'...' Ardunio 编译器上的错误
- 最小的CMake构建为Android
- 在"结构提升::enable_if<提升::is_pod<T>,无效>"中没有名为"type"的类型
- 将 const 转换为 const char* 无效,我该如何解决?使用 gcc7 时失败
- 将"-01"替换为"-02" 英特尔编译器选项会导致 FPE 在较小的 for 循环行程计数中抛出
- Valgrind 大小为 8 且地址 0x5b7e520 的读取无效,在大小为 16 的块内为 0 字节 free'd
- Gtkmm 窗口为空白,不显示任何小部件或标题
- 在向量中查找大于 0(或通常为 k)的最小元素的最佳方法是什么?
- 如何将我的小程序转换为用于项目的函数?
- 将一个小的 C 定义重写为"normal" C++函数
- Qt:无法直接为带有子项的小部件添加滚动条
- 为 c++ cin 上的输入数无效生成错误消息
- JNI 在应用程序中检测到错误:在为 innerclass 调用 NewObject 时使用了无效的 jobject
- Zedboard zynq-7000 Opencl 浮点数从类型 'double*' 强制转换为类型 'double' 无效
- 如何将常量无效*转换为istream?
- 如何将常量无效*转换为无符号字符*
- 搜索一组点,其长度总和最小为矩形.算法是什么
- 如何将无效*转换为size_t
- Qt - 无效使用不完整的类型 'class QScrollBar' - 为文本编辑小部件添加水平滚动条