使用 new 运算符分配的对象的生存期
在退出分配有 new 运算符的对象的定义范围时,将不会销毁这些对象。 由于 new 运算符将返回指向其所分配的对象的指针,因此程序必须使用合适的范围定义指针才能访问这些对象。 例如:
// expre_Lifetime_of_Objects_Allocated_with_new.cpp
// C2541 expected
int main()
{
// Use new operator to allocate an array of 20 characters.
char *AnArray = new char[20];
for( int i = 0; i < 20; ++i )
{
// On the first iteration of the loop, allocate
// another array of 20 characters.
if( i == 0 )
{
char *AnotherArray = new char[20];
}
}
delete [] AnotherArray; // Error: pointer out of scope.
delete [] AnArray; // OK: pointer still in scope.
}
在上面的示例中,指针 AnotherArray 一旦超出范围,将无法再删除对象。