Отчет Valgrind: Неверное чтение размера 8 при использовании функции backtrace () в c ++? - PullRequest
0 голосов
/ 29 ноября 2011

Я использую функцию backtrace () в моей функции следующим образом:

string newFunction()
{
     void *array[5002];
     // get void*'s for all entries on the stack
     size_t size
     size = backtrace(array, 5000);
     char** trace = backtrace_symbols(array, size);
     string stackTrace;
     for(size_t index=0; index<size; ++index) 
     {          
       stackTrace += trace[index];
     }
    return stackTrace; 
}

с использованием вышеуказанной функции в случаях отладочной сборки. Я получаю ошибку памяти.Отчет valgrind показывает следующий журнал:

==31045== Invalid read of size 8
==31045==    at 0x358D208806: ??? (in /lib64/libgcc_s-4.1.2-20080825.so.1)
==31045==    by 0x358D208933: _Unwind_Backtrace (in /lib64/libgcc_s-4.1.2-20080825.so.1)
==31045==    by 0x3588AE6357: backtrace (in /lib64/libc-2.5.so)
==31045==    by 0xF2A1F99: (anonymous namespace)::newFunction() (myFIle.cpp:63)

, поэтому любые предложения по устранению неисправности памяти выше.Заранее спасибо.

...