前段时间我问自己,当我写这样的东西时:
char* first(int howMany){
return (char*)malloc(howMany);
}
int main(){
char*t;
int one=20;
t=first(20);
}
此代码在codepad.org崩溃,但在 Mepis Linux 11.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)
?
PS:如果我尝试在 Objective-C 中使用这个函数会发生什么?
(NSArray*) first(){
return [NSArray array];
}