У меня возникла странная проблема в куске кода.memset и SIGSEGV
void app_ErrDesc(char *ps_logbuf, char *pc_buf_err_recno)
{
char *pc_logbuf_in;
char rec_num[10];
char *y = "|";
int i, j;
memset(rec_num, 0, sizeof(rec_num));
memset(pc_buf_err_recno, 0, LOGBUFF);
.....
.....
}
По какой-то причине первый вызов memset отправляет SIGSEGV. Что более странно, когда внутри gdb такая же строка выполняется примерно 30 раз, хотя функция называется только один раз, и внутри нет петель! Вот часть сеанса gdb.
7295 /*Point to logbuffer string*/
(gdb)
7292 memset(rec_num, 0, sizeof(rec_num));
(gdb)
7295 /*Point to logbuffer string*/
(gdb)
7292 memset(rec_num, 0, sizeof(rec_num));
(gdb) n
7295 /*Point to logbuffer string*/
(gdb)
7292 memset(rec_num, 0, sizeof(rec_num));
(gdb)
Программный сигнал SIGSEGV, ошибка сегментации.
Я также попытался запустить программу с помощью инструмента memcheck valgrind, но не получил ничего существенного в этом фрагменте кода.
Файл, который я обрабатываю, имеет только одну запись.
Любые указатели оцениваются. Благодарю.
, пожалуйста, предоставьте нам окружающий звонок app_ErrDesc –