当变量是局部变量时,是否需要删除



如果要使用"new"为函数中的本地字符数组分配新内存,是否需要在函数返回之前使用delete?

函数返回后,它不会自动删除吗?

是的,这是必要的:如果您用newnew[]在动态存储中分配了一些东西,编译器不知道您没有计划在函数返回后传递分配的对象,所以您有责任调用delete(或delete[])来释放您分配的对象。

您可以使用unique_ptr<T>来避免显式调用delete,但该调用将由unique_ptr<T>的析构函数代表您进行。

是的,当函数返回时,用new分配的变量不会自动释放,仍然需要删除。

是,是,是。除非使用智能指针(如auto_ptrboost::shared_ptr),否则必须使用delete来释放内存。

因为new在堆上分配,而堆不依赖于当前堆栈帧,所以当C++破坏当前堆栈帧时,内存不会被释放。如果使用new,则必须始终使用delete。时期

最新更新