할당에 대해 꼬리를 구현하려고합니다. 나는 제대로 작동하지만 나는 임의의 시간에 자유에서 오류가 발생하는 것 같습니다.Malloc 오류 : 해제 된 개체의 체크섬이 잘못되었습니다.
나는 그것을 볼 수없고, 그 패턴 이외의 것을 추적하거나 일관성이 없다.
예를 들어, "tail -24 test.in"으로 프로그램을 호출하면 여러 줄에서 잘못된 줄 바꿈 오류가 발생합니다. 그러나 다른 파일과 심지어 줄 수를 다르게해서 인쇄해도 오류없이 다시 돌아올 것입니다.
문제를 추적하는 방법에 대한 아이디어는 몇 시간 동안 디버깅하려고 시도했지만 아무 소용이 없습니다.
라인 ** 숯불로 정의했다 malloc을있는 그대로 :
lines = (char**) malloc(nlines * sizeof(char *));
void insert_line(char *s, int len){
printf("\t\tLine Number: %d Putting a %d line into slot: %d\n",processed,len,slot);
if(processed > numlines -1){//clean up
free(*(lines+slot));
*(lines + slot) = NULL;
}
*(lines + slot) = (char *) malloc(len * sizeof(char));
if(*(lines + slot) == NULL) exit(EXIT_FAILURE);
strcpy(*(lines+slot),s);
slot = ++processed % numlines;
}
은 슬롯 0 또는 1 기반입니까? 슬롯이 nlines-1을 초과하지 마십시오. 맞습니까? – Dre
오른쪽 모듈러스가 자동으로 0으로 돌아갑니다 – None
어떤 컴파일러와 어떤 디버거를 사용하고 있습니까? 그에 따라 문제를 디버깅하는 데 도움이 될 수도 있습니다. –