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。
我在面试中被问到这个问题:
"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。