我正在执行一个任务的尾部。我有它正常工作,但我似乎从随机时间免费获得一个错误。Malloc错误:释放对象的校验和不正确
我看不到,要追踪到一个模式或除了它是一致的任何东西。
例如,如果我将我的程序称为“tail -24 test.in”,我会在多次运行的同一行上得到不正确的校验和错误。但是,使用不同的文件甚至不同数量的行来打印回来,我将无错地回来。
关于如何追踪问题的任何想法,我一直试图调试它几个小时无济于事。
这里是有问题的代码:
线被定义为一个char **,是的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 2008-10-24 07:10:09
right模数自动回到0 – None 2008-10-24 07:15:13
您使用哪个编译器和哪个调试器?根据这一点,他们可能会提供一些调试问题的帮助。 – 2008-10-24 08:03:43