C++内存管理。这段代码有什么问题?

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

我在面试中被问到这个问题:
"In terms of memory management in C++, state everything that is wrong with this code?"

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



class Foo{

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

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

x没有被删除,所以代码有内存泄漏

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

此外,foo 不是 Foo 的构造函数,因为大小写不一样,因此您将遇到缺少 return 类型的错误。

然后每次构造新对象时都会泄漏字符串对象,因为永远不会对新对象调用 delete。