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