阅读内容

Windows与Linux编译器的区别

[日期:2007-05-15] 来源:Linux公社  作者:Linux


  (2)new操作符的出错处理

  另一个问题是new操作符的出错处理。由于编译器的设置不同,new操作符可能具有不同的行为。考察如下的代码段:

#include
class A
{
public:
void *operator new( size_t size )
{
return NULL;
}
A()

{
printf("Constructor called\n");
a = 0;
}
private:
int a;
};

int main()
{
A *p = new A();
printf("%x\n", p );
return 0;
}

  在Visual C++ 2003中,上面的程序输出0。而GCC 4.1.0编译器的输出结果为:

   Constructor called
   Segmentation fault

  也就是说,Visual C++ 2003的编译器会检查new的返回值,如果返回为空,构造函数就不再执行。但是gcc必须加上–fcheck-new编译参数才具有这一行为:g++ –fcheck-new test.cpp。这样在Linux上上述程序也会输出0。
上一页1234下一页  GO
【内容导航】
第1页:Windows与Linux编译器的区别 第2页:Windows与Linux编译器的区别
第3页:Windows与Linux编译器的区别 第4页:Windows与Linux编译器的区别



相关资讯       windows 
本文评论       全部评论
发表评论
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款


点评: 字数
姓名:

L
I
N
U
X


GOOGLE搜索
Google