2016-02-14 1 views
-1

Я использую Qt5. В программе, которую я пишу, у меня есть класс с очень простым конструктором. Проблема в том, что когда я проверяю проблемы с Valgrind, я получаю «Неверная запись размера» при каждом присваивании.Недопустимая запись размера 4 в конструкторе

Это заголовок:

#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 (родитель) и режим = 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 

Я не понимаю, как такое простое присвоение может привести к ошибке. Спасибо за ваши предложения.

+3

Как вы используете свой класс? Что делает конструктор 'MainWindow'? Не могли бы вы попытаться создать [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve) и показать нам? (Кое-что, о чем вы должны знать уже сейчас, будучи участником здесь так долго) –

ответ

0

После нескольких попыток, похоже, проблема была в QtCreator. Когда я очищал проект, он составлялся без проблем.