首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++中strtol()的奇怪崩溃

C++中strtol()的奇怪崩溃
EN

Stack Overflow用户
提问于 2012-05-18 08:56:41
回答 1查看 1K关注 0票数 4

我用stdlib库中的strtol()做了一些证明,因为我有一个总是崩溃的程序,我发现它工作得很好:

代码语言:javascript
运行
复制
main(){
char linea[]="0x123456",**ap;
int num;
num=strtol(linea,ap,0);
printf("%d\n%s",num,*ap);
}

但是当我添加一个新的声明时,不管它在哪里崩溃,就像这样

代码语言:javascript
运行
复制
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上这样做

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-18 09:05:12

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

这不会崩溃:

代码语言:javascript
运行
复制
main() {
    char linea[]="0x123456", *ap;
    int num;
    num = strtol(linea, &ap, 0);
    printf("%d\n%s", num, ap);
    int k;
}
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10645420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档