for(k=i; k<MAXRECORDS; k++) {
if(slist->servers_ptr[k+1] != NULL) {
slist->servers_ptr[k] = slist->servers_ptr[k+1];
} else slist->servers_ptr[k] = NULL;
}
, 나는 잘못된 크기 8for 루프에서 메모리 누수의 원인은 무엇입니까? 내가 Valgrind의 실행하면
참고 MAXRECORDS = 10
의 오류가 발생하고, 배열의 크기는 MAXRECORDS
입니다.
내 for 루프의 테두리 대소 문자와 관련이 있다고 가정하지만 논리적으로 어떻게 발생하는지 이해하지 못합니다.
편집 : for 루프의 마지막 라운드에서 servers_ptr[k+1]
에 액세스하는 것이 배열 외부에 있으며 valgrind 오류가 발생한다는 것이 지적되었습니다. 그 이후로 내 코드를 업데이트했습니다 :
for(k=i; k<MAXRECORDS-1; k++) {
if(slist->servers_ptr[k+1] != NULL) {
slist->servers_ptr[k] = slist->servers_ptr[k+1];
if(k==MAXRECORDS-2)slist->servers_ptr[k+1] = NULL;
} else slist->servers_ptr[k] = NULL;
}
여전히 valgrind에서 오류가 발생합니다. 잘못 업데이트 했습니까?
다음 내 대답은 정확합니다. –
여기서 'malloc'또는 'realloc'을 수행하지 않습니다. 이 코드에서 메모리 누수 문제가 있다고 생각합니까? 나는 문제가 당신이 메모리를 할당하고있는 다른 코드 스 니펫으로있을 것이라고 생각한다. – c0da
나는 명백하게 틀린 아무것도 보지 않고있다. valgrind에서 얻은 정확한 오류를 게시 할 수 있습니까? –