我用stdlib库中的strtol()做了一些证明,因为我有一个总是崩溃的程序,我发现它工作得很好:
main(){
char linea[]="0x123456",**ap;
int num;
num=strtol(linea,ap,0);
printf("%d\n%s",num,*ap);
}但是当我添加一个新的声明时,不管它在哪里崩溃,就像这样
main(){
char linea[]="0x123456",**ap;
int num;
num=strtol(linea,ap,0);
printf("%d\n%s",num,*ap);
int k;
}仅仅添加最后一个"int k;“,程序在执行strtol()时就崩溃了,这不能理解为什么。我在Code::Blocks上这样做
发布于 2012-05-18 09:05:12
你会崩溃,因为你给strtol传递了一个未初始化的指针,而strtol取消了对它的引用。你不会因为运气而在第一次崩溃时崩溃。
这不会崩溃:
main() {
char linea[]="0x123456", *ap;
int num;
num = strtol(linea, &ap, 0);
printf("%d\n%s", num, ap);
int k;
}https://stackoverflow.com/questions/10645420
复制相似问题