Teacher* p=new Teacher();
if(p==NULL)//在使用‘new’创建对象之后测试指针是否为NULL
{
std::cree<<"无法创建Teacher对象"<<endl;//输出错误信息
abort(); //异常处理函数
}
实际上在“new”之后和“delete”之前测试指针NULL都是多此一举。在C++中,如果运行时系统无法为Teacher对象分配足够的内存则会抛出一个std::bad_alloc异常,“new”操作永远不会返回为NULL。另一方面,C++语言保证,如果p等于NULL,则“delete p”不作任何事情。
Teacher* p=new Teacher();
delete p;
p=nullptr;
//delete一个指针之后,只是回收指针指向位置的空间,而指针本身的值不变(也就是说还是指向那个地址的)。你需要手工将其赋值为NULL。
本文探讨了C++中使用new和delete进行内存管理的常见误区,解释了为何在new之后检查指针是否为NULL是不必要的,以及如何正确处理delete操作后的指针状态。

被折叠的 条评论
为什么被折叠?



