0
내 프로그램에서 메모리 누수를 해결하려고했습니다. 이것에 어떤 도움이 정말 정말 이해할 수있을 것이다조건부 점프 또는 이동은 valgrind를 사용하여 초기화되지 않은 값에 따라 달라집니다.
==7853== Conditional jump or move depends on uninitialised value(s)
==7853== at 0x40116D: me_hash (in /home/iva/University/AdvProg/Assessed/a.out)
==7853== by 0x400D7A: ml_lookup (in /home/iva/University/AdvProg/Assessed/a.out)
==7853== by 0x4013CD: main (in /home/iva/University/AdvProg/Assessed/a.out)
: 나는 Valgrind의를 실행할 때
unsigned long me_hash(MEntry *me, unsigned long size) {
unsigned long hash;
unsigned long hash_init;
int i;
hash = 0;
hash_init = 0;
for (i = 0; me -> surname[hash_init] != '\0'; i++) {
hash_init += (int) me -> surname[i];
}
hash += 5381*hash_init;
for (i = 0, hash_init = 0; me -> postcode[hash_init] != '\0'; i++) {
hash_init += (int) me -> postcode[i];
}
hash_init = hash_init + me -> house_number;
hash += 5381*hash_init;
hash = hash%size;
return hash;
}
이 내 터미널에 인쇄 된 결과입니다 :이 오류를 발생시키는 코드의 조각이다.
-g로 컴파일 했습니까? –
먼저 gcc -W program.c로 컴파일했습니다. 그런 다음 valgrind --tool = memcheck --track-origins = yes --leak-check = full --read-var-info = yes -v ./a를 사용했습니다. out – Iva
valgrind의 출력에서 줄 번호를 얻으려면'-g' (와'-Wall -Wextra -std = c99')를 추가하십시오. – Mat