c++内存管理.这段代码有什么问题?

C++ memory management. What is wrong with this code?

本文关键字:什么 问题 代码 管理 内存 段代码 c++      更新时间:2023-10-16

我在一次采访中被问到这个问题:
"就c++中的内存管理而言,说明这段代码的所有错误?"

int main(){
        for(int i = 0; i<10; i++){
        Foo foo = new Foo();
        delete foo; }
        }

class Foo{
    foo(){
        string x = new string;
        }
    }

我是c++和OOP的新手,所以我有点卡住了。帮助吗?

初学者无法编译。在string x = new string;中,类型不匹配。您正在将字符串*赋值给字符串变量。你需要string* x = new string;

foo不是Foo的构造函数,因为情况不一样,所以你会有一个缺失的返回类型错误。

那么,每次构造一个新对象时,您都在泄漏一个字符串对象,因为永远不会在新对象上调用delete。

x未被删除,因此代码中存在内存泄漏