C++ c++;内存是否泄漏

C++ c++;内存是否泄漏,c++,memory,syntax,C++,Memory,Syntax,我有密码: class foo { public: bar(const QString& s){} ..... }; int main() { ..... foo f; for(int i = 0; i < 100; i++) f.bar(QString("%1").arg(i)); .... return 0; } 我对字符串“socket.bind(QHostAddress(“192.168.20.1”),50501)”有任何问题?没有内存泄漏。QS

我有密码:

class foo
{
public:
  bar(const QString& s){}
.....
};

int main()
{
 .....
 foo f;
 for(int i = 0; i < 100; i++)
     f.bar(QString("%1").arg(i));
 ....
 return 0;
}

我对字符串“socket.bind(QHostAddress(“192.168.20.1”),50501)”有任何问题?

没有内存泄漏。
QString
类管理自己的内存(假设您正在讨论这个问题)

您正在创建该类的临时文件,当调用
foo::bar
返回时,该文件将被销毁。此时,析构函数将运行,释放
QString
类所持有的所有内存

通常,只要您的资源由类管理,并且您没有使用
new
分配它们,就不必担心释放资源,因为当类实例超出范围时,析构函数将运行

当您使用
new
,或使用其生存期不由类管理的资源(如
malloc
返回的内存或
fopen
返回的文件(与
fstream
相反,fstream是一个类,当它被销毁时会进行清理)),这时您需要确保对其进行清理


顺便说一句,最好的方法是将此类资源包装在一个类中,该类通过构造函数和析构函数管理资源的生命周期,然后使用该类而不是“原始”类资源;这称为模式。

您的代码没有编译。我会先处理它。可能不会。
QString
是用来跟踪它自己的内存的,您只是传递一个副本。我假设
foo
有一个
xxx操作符()(QString const&)
的成员。您是指f.bar(QString(“一些字符串文本?”)请发布真实代码。不要凭记忆打字。悲伤,谢谢。Kerrek SB真实代码太大了。
class foo
{
  QUdpSocket socket;
public:
  foo();  
  void send_msq();
};

foo::foo(){
  socket.bind(QHostAddress("192.168.20.1"),50501);
}

void send_msq()
{
  socket.writeDatagram(...);
}