- 论坛徽章:
- 0
|
最近做课程设计写一个C程序,遇到一个奇怪的问题。WinXP下gcc可以正常运行的程序,到Linux下同样gcc会有莫名其妙的段错误,比如其中的一些printf(),单步执行过去出段错误,有些甚至只是简单的printf("Kaka");都会出段错误,去掉这句printf就没事了,所以应该也不会是周围的语句造成的。我试了试写一个只有printf()的C程序没有问题。
还有下面这个malloc也出现段错误:
if((reval = malloc(sizeof(int64_t)*length)) == NULL)
{ fprintf(stderr,"Cannot allocate space for reval\n");
exit(1);
}
但是WinXP下都可以通过。
对C一直一知半解,不知道这个问题问的是不是很白,但愿能得到指点,谢谢。程序挺长的,不好贴出来,下面是printf出错的部分:(代码写的比较丑,见谅)
if(*str++ != OBJECT_IDENTIFIER)
{
fprintf(stderr,"Wrong in variable name field: %d\n",*(str-1));
fprintf(stderr,"Pre: %d\tPost: %d\n",*(str-2),*(str));
exit(1);
}
temp = *str;
//printf("Now is %d, pre is %d\n",*str, *(str-1));
//printf("Kaka");
lennlen = 0;
if((temp & 0x80)!= 0)
{
lennlen = temp & 0x7f;
parseVB.var_name_length = parseLength((int *)(str+1),lennlen);
}
else {
parseVB.var_name_length = temp;
}
就是现在注释掉的两句有错。
[ 本帖最后由 neilchi 于 2007-6-28 10:06 编辑 ] |
|