Я запускаю valgrind для довольно большого проекта.
Один из моих классов указывает на недопустимую запись, но он в месте без кода.
Детали и адреса памяти были изменены, чтобы защитить невинных.
У меня есть такая функция:
class thing{
int record(char *c, int i);
... };
int thing::record(char *c, int i)
{ /* line 601 is here */
static const char *x = __func__;
...
return 1;
};
И valgrind выдает следующую ошибку:
==xxx== Invalid write of size 8
==xxx== at 0xx0FBF48: thing::record(char*, int) (thing.cpp:601)
==xxx== by 0xx0FB32D: thing::open(std::string, char const*, bool, bool, bool) (thing.cpp:370)
==xxx== by 0xxE8E02: thing::init() (thing.cpp:698)
==xxx== by 0xx66AC4B: namespace::subnamespace::otherthing::run() (otherthing.cpp:653)
==xxx== by 0xx3A53B: main (main.cpp:36)
==xxx== Address 0xxffeb49958 is on thread 1's stack
==xxx== in frame #0, created by thing::record(char*, int) (thing.cpp:601)
Проблема в том, в строке 601 нет кода. Я довольно новичок в valgrind, поэтому, если это что-то глупое, пожалуйста, дайте мне знать.
Спасибо!