首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C/C++/ObjectiveC的内存差异,程序在codepad.org上崩溃而不是在Linux上崩溃

C/C++/ObjectiveC的内存差异,程序在codepad.org上崩溃而不是在Linux上崩溃
EN

Stack Overflow用户
提问于 2012-06-14 17:21:52
回答 1查看 224关注 0票数 0

不久前,我问自己,当我写这样的东西时:

代码语言:javascript
复制
   char* first(int howMany){
      return (char*)malloc(howMany);
   } 

   int main(){
      char*t;
      int one=20;
      t=first(20);  
   }

这段代码在codepad.org上崩溃了,但在Mepis Linux11.04中,它只是引起了一些警告。

但是如果我为C++编写类似这样的代码:

代码语言:javascript
复制
char* first(int howMany){
    return new char [howMany];
   }

int main(){
    char*t;
    int one=20;
    t=first(20);  
}

这段代码运行良好。

我的问题是:

为什么C代码不工作,以及当我尝试

return (char*)malloc(howMany)

附言:如果我在Objective-C中使用这个函数,会发生什么?

代码语言:javascript
复制
(NSArray*) first(){
    return [NSArray array];
}
EN

回答 1

Stack Overflow用户

发布于 2012-06-14 17:41:04

在这种情况下,CC++之间的一个重要区别是,在C++中,如果没有显式返回,则main函数返回0。这就是您的代码示例中的情况,因此它被视为在C++中成功退出,而不考虑任何代码错误。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11030148

复制
相关文章

相似问题

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