1

是否允许在删除后使用指针的名称?

例如,此代码不会编译。

    int hundred = 100;
    int * const finger = &hundred;
    delete finger;

    int * finger = new int; // error: conflicting declaration 'int* finger'

这也不会:

    int hundred = 100;
    int * const finger = &hundred;
    delete finger;

    int finger = 50; // error: conflicting declaration 'int finger'
4

1 回答 1

2

不,int *它仍然是一个活的物体。int它所指向的生命周期已经结束。

注意

int hundred = 100;
int * const finger = &hundred;
delete finger;

具有未定义的行为,因为您尝试delete了未分配的对象new

通常,new不应delete出现在 C++ 程序中。拥有指针应该是std::unique_ptr(或很少std::shared_ptr或其他用户定义的智能指针类型)。

于 2021-02-03T15:21:36.913 回答