У меня есть C-программа, которая попадает в цикл for, чего не должно быть, запуск ее с
valgrind --tool=memcheck --leak-check=yes a.out
ничего не возвращает даже до тех пор, пока программа не будет поймана.Есть ли способ изменить настройки Valgrind, чтобы помочь мне найти утечка ?как отмечают многие, это не будет считаться утечкой, извинения
спасибо заранее
вот этот цикл
int clockstate=0;
int clocklength=0;
int datalength=0;
int datastate=0;
int dataloc = 9;
((((some other code that i don't think is important to this part))))
int dataerr[13] = {0};
int clockerr[13] = {0}; // assumes that spill does not change within an event.
int spill=0;
int k = 0;
spill = Getspill(d+4*255+1); // get spill bit from around the middle
//printf("got spill: %d \n", spill); // third breakpoint
for( k = 0; k < 512; k++)
{
// Discardheader(d); // doesnt actually do anything, since it's a header.f
int databit = Getexpecteddata(d+4*k+1);
printf("%d ",k);
int transmitted = Datasample(&datastate, &datalength, d+4*k+2,dataerr,dataloc, databit);
printf("%d ",k);
Clocksample(&clockstate, &clocklength, d+4*k+3,clockerr, transmitted);
printf("%d \n",k);
// assuming only one error per event (implying the possibility of multi-error "errors"
// we construct the final error at the very end of the (outside this loop)
}
и цикл повторяется после печати
254 254 254
255 255 255
256 256 1 <- это проблема </p>
2 2 2
3 33
edit **, поэтому я отследил, где это происходит, и в какой-то момент в
void Clocksample (int* state, int* length, char *d, int *type, int transbit);
у меня есть код, который говорит *length = 1;
, поэтомукажется, что эта команда каким-то образом пишет на int k
.Теперь мой вопрос: как это произошло, почему он не меняется length
обратно на тот, который я хочу, и как мне это исправить.если вы хотите, я могу опубликовать весь код на Clocksample