不久前,我问自己,当我写这样的东西时:
char* first(int howMany){
return (char*)malloc(howMany);
}
int main(){
char*t;
int one=20;
t=first(20);
}这段代码在codepad.org上崩溃了,但在Mepis Linux11.04中,它只是引起了一些警告。
但是如果我为C++编写类似这样的代码:
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中使用这个函数,会发生什么?
(NSArray*) first(){
return [NSArray array];
}发布于 2012-06-14 17:41:04
在这种情况下,C和C++之间的一个重要区别是,在C++中,如果没有显式返回,则main函数返回0。这就是您的代码示例中的情况,因此它被视为在C++中成功退出,而不考虑任何代码错误。
https://stackoverflow.com/questions/11030148
复制相似问题