为什么C++程序员应该尽量减少使用`new`?
大家好!我是一名初学C++的开发者,正在努力理解最佳实践。到处都读到应该避免使用`new`,但不太明白原因。教科书上经常写:“通过`new`在堆上分配内存”,然后经验丰富的程序员又说:“别这么做”。这让我很困惑。
这里有一个简单的例子:我需要创建一个生命周期比当前函数更长的对象。我写:
```cpp
class MyClass {
public:
MyClass() { std::cout << "创建\n"; }
~MyClass() { std::cout << "销毁\n"; }
void doWork() { /* ... */ }
};
void process() {
MyClass* obj = new MyClass();
obj->doWork();
// 忘了delete!内存泄漏。
}
```
问题:我经常忘记调用`delete`,这导致内存泄漏。我还听说`new`可能会抛出异常,如果构造函数出问题,内存也会泄漏。
那么,如何创建那些需要在函数作用域之外存在的对象呢?使用全局变量?