memset используется с параметром нулевой длины :игнорировать или остерегаться?

У меня возникли проблемы с поиском какой-либо информации относительно следующего предупреждения при связывании динамической библиотеки:

In function `MyClass::myfunc()':
MyClass.cpp:(.text+0x14e4): warning: memset used with constant zero length parameter; this could be due to transposed parameters

Вот выдержка изmyfunc:

void MyClass::myfunc() {
    vector<Variable*>::const_iterator it;

    for (it = m_vars.begin();
         it != m_vars.end();
         ++it) {
        if ((*it)->recordme) {
            MyRecord* r = new MyRecord(*it);
            initMyRecord(*r);
            m_records.push_back(r);
        }
    }
}

Так что я в значительной степени застрял на том, должен ли я искать возможные причины этого мемсета. Звонок новому оператору у меня первое подозрение, но я даже не уверен, стоит ли искать это. Я не уверен, следует ли мне серьезно отнестись к этому предупреждению или пропустить его.

Вопрос :, что мне делать с этим предупреждением? И каких закономерностей мне следует высматривать, чтобы быть уверенным, что потом я не прострелю себе ногу?

Обновление :Вот конструктор MyRecord, который находится в заголовочном файле, поэтому он может быть встроен или нет, если я правильно понимаю.

class MyRecord {
public:
    MyRecord(const Variable* var) :
        buffer(0),
        lastSave(-1 * std::numeric_limits<double>::max()),
        sample(100),
        bufsize(100),
        gv(var),
        rec_function(0)
    {};
    virtual ~Record() {
        if (rec_function)
            delete rec_function;
        rec_function = 0;
    };

private:
    Record(const Record&);
    Record& operator=(const Record& rec);

public: // @todo: remove publicness
    boost::circular_buffer< boost::tuple<double,boost::any> > buffer;
    double lastSave;
    double sample;
    unsigned int bufsize;
    const Variable* gv;
    RecordFunctor* rec_function;
};

RecordFunctor — это чистая -виртуальная структура:

struct RecordFunctor {
    virtual ~RecordFunctor() {};
    virtual void record(const double) = 0;
};

Дополнительная информация?Я компилирую с флагами -O2и g++ (Ubuntu/Linaro 4.6.1 -9ubuntu3 )4.6.1

5
задан YuppieNetworking 9 July 2012 в 20:01
поделиться