类的初始化&;内存泄漏 假设我有这个基本C++类: class Foo { public: void Foo() {m_a=0; m_b=0;} void Foo(int a, int b) { m_a=a; m_b=b; } void setA(int a) {m_a=a;} void setB(int b) {m_b=b;} static void init(int a, int b, Foo* foo) { if(foo) *foo = Foo(a, b); } private: int m_a; int m_b; };
在我的主要课程中,我会:类的初始化&;内存泄漏 假设我有这个基本C++类: class Foo { public: void Foo() {m_a=0; m_b=0;} void Foo(int a, int b) { m_a=a; m_b=b; } void setA(int a) {m_a=a;} void setB(int b) {m_b=b;} static void init(int a, int b, Foo* foo) { if(foo) *foo = Foo(a, b); } private: int m_a; int m_b; };,c++,C++,在我的主要课程中,我会: int main() { Foo f; Foo::init(1, 2, &f); Foo::init(1, 2, &f); Foo::init(1, 2, &f); } 这个程序有内存泄漏吗?初始化这样的类是一种好的做法还是更可取的做法,例如: static void init(int a, int b, Foo* foo) { if(foo){ foo->setA(a); foo->setB
int main()
{
Foo f;
Foo::init(1, 2, &f);
Foo::init(1, 2, &f);
Foo::init(1, 2, &f);
}
这个程序有内存泄漏吗?初始化这样的类是一种好的做法还是更可取的做法,例如:
static void init(int a, int b, Foo* foo)
{
if(foo){ foo->setA(a); foo->setB(b); }
}
这个程序有内存泄漏吗
不,没有动态分配,所以没有泄漏
这样初始化一个类是一种好的做法吗
不,这很奇怪,也很混乱,从技术上讲根本不是初始化(在第一次声明变量时完成),而是重新分配。我很惊讶它可以编译,因为没有默认的构造函数
还是更喜欢这样的东西
不,那也很奇怪。初始化由构造函数完成:
Foo f(1,2);
和调任
f = Foo(3,4);
您是否尝试编译代码?您没有动态分配任何内容(使用
new
或malloc
),因此无需发布任何内容(使用delete
或free
)。那么,没有泄漏。这里应该泄漏什么?我找不到任何一个new()
,也找不到任何间接使用它的类代码>?@Holt:我知道我能做Foo f(1,2)但是我想知道init是否是一个漏洞。