У меня сложилось впечатление, что в методе C ++ / CLI, если класс, который я использовал, реализует IDisposable, dispose автоматически вызывается, когда объект выходит из области видимости. Недавно я наткнулся на код, который выглядит так:
void SomeClass::SomeMethod()
{
DisposableObject^ myObject = nullptr;
try
{
// Some code that creates a DisposableObject and assigns to myObject
}
finally
{
if (myObject != nullptr)
{
// this is instead of IDisposable.Dispose
delete myObject;
}
}
}
Мой вопрос на самом деле двоякий. Во-первых, мне нужно явно вызвать delete
для объекта. Во-вторых, в чистом C ++ безопасно вызывать delete для нулевого объекта, меняет ли это поведение в C ++ / CLI, просто интересно, потому что кажется, что мне не нужна проверка nullptr вокруг вызова delete, если поведение является same
в C ++ / CLI (я понимаю, что поведение - это относительный термин, поскольку удаление на управляемом объекте делает разные вещи, чем на неуправляемом объекте).