gpt4 book ai didi

c++ - 将 QString 转换为 char* 以用于第 3 方库的内存清理问题,如何解决?

转载 作者:太空宇宙 更新时间:2023-11-04 15:53:38 25 4
gpt4 key购买 nike

我在 Qt 中使用第 3 方库,它需要 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"));

除了像这样乱七八糟的事情之外,我还能做些什么来确保我返回的 char* 得到清理?

char* path = toCharArray("someFile");
3rdPartyObject->3rdPartyMethod(path); // The class and method called can differ
delete[] path;

最佳答案

为什么不直接使用

QString s;
3rdPartyObject->3rdPartyMethod( s.toLocal8Bit().data() );

在语句末尾销毁临时 QByteArray 将清除所有资源。

关于c++ - 将 QString 转换为 char* 以用于第 3 方库的内存清理问题,如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3563433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com