void f() {
int *ptr = new int;
// is the following line necessary?
delete ptr;
}
int main() {
f();
return 0;
}
我是否必须释放函数f中分配的内存,还是因为不再有对该内存的引用而自动释放了它?
我需要从c ++中的本地指针释放分配的内存吗?
如果要避免内存泄漏-并且应该-则应分配所有分配的内容。每分配一个新对象都应删除一个。
或者它是否自动释放
动态分配不会自动释放。
因为不再有对该内存的引用了?
是否引用了内存与内存是否已释放无关。如果动态内存没有被任何东西引用,则说明内存已泄漏。 C ++没有垃圾回收。
某些类确实分配了内存并在销毁它们时释放了该分配。这种模式称为RAII。指针不是类,并且没有析构函数。指针生命周期的结束对指向的对象没有影响。
您应避免使用裸机拥有的指针。我建议使用RAII容器或智能指针(实际上不是指针,而是类)来管理内存。另外,避免在不需要时进行动态分配。