4

我正在使用 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 上这样做

4

1 回答 1

10

您会崩溃,因为您传递strtol了一个未初始化的指针,并strtol取消了它的引用。你不会因为纯粹的运气而第一次崩溃。

这不会崩溃:

main() {
    char linea[]="0x123456", *ap;
    int num;
    num = strtol(linea, &ap, 0);
    printf("%d\n%s", num, ap);
    int k;
}
于 2012-05-18T01:05:12.440 回答