char *pch=NULL;pch = new char[100]; 和char *pch= new char[100];有什么区别
谢谢
~~~~~~~~~~
参考答案:几乎没有区别,唯一的区别在于
char *pch=NULL;pch = new char[100];
是在定义pch时先初始化为NULL,然后分配内存。
而
char *pch= new char[100];
定义时直接分配初始化内存。
后一种方法效率略高。
第一种方法与标准C++不太一致。应该是
char *pch=0;pch = new char[100];
注意0和NULL是不同的,C++建议使用0
新标准在动态分配内存失败时会抛出std::bad_alloc异常,如果不抛出异常而象过去那样赋值为0,则应该使用
pch = new char[100] throw();
或
char *pch= new char[100] throw();