Jak*_*les 0 c++ qt memory-leaks
我正在使用Qt的第三方库,需要char*字符串.我使用以下代码将我的QString转换为char*
char* toCharArray(const QString &string)
{
QByteArray bytes = string.toLocal8Bit();
char* data = new char[bytes.count() + 1];
strcpy(data, bytes.data());
return data;
}
// later on...
3rdPartyObject->3rdPartyMethod(toCharArray("someFile"));
Run Code Online (Sandbox Code Playgroud)
char*除了做这样凌乱的事情外,我该怎样做才能确保我的回归得到清理?
char* path = toCharArray("someFile");
3rdPartyObject->3rdPartyMethod(path); // The class and method called can differ
delete[] path;
Run Code Online (Sandbox Code Playgroud)
为什么不用
QString s;
3rdPartyObject->3rdPartyMethod( s.toLocal8Bit().data() );
Run Code Online (Sandbox Code Playgroud)
在语句结束时销毁临时QByteArray将清理所有资源.