Avatar ·

为什么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`可能会抛出异常,如果构造函数出问题,内存也会泄漏。 那么,如何创建那些需要在函数作用域之外存在的对象呢?使用全局变量?