gpt4 book ai didi

c++ - 确保文件名不超出范围

转载 作者:行者123 更新时间:2023-11-28 00:47:48 25 4
gpt4 key购买 nike

我想选择一个文件并将文件名存储为我的QT 表单的char * 成员变量。我有以下内容

void MainWindow::SelectVolFile(){
QString qFileName = QFileDialog::getOpenFileName(this,
tr("Select VOL file..."), QDir::currentPath(), tr("Files (*.VOL)"));
if (!qFileName.isEmpty()){
QByteArray byteFileName = qFileName.toLatin1();
this->fileName = byteFileName->data();
}
}

但是,我认为一旦此函数返回,byteFileName->data() 就会超出范围。解决这种情况的好方法是什么?我不确定应该将哪个变量放入堆中。

最佳答案

它在很大程度上取决于 this->fileName。如果 fileNamechar*,那么你是对的:byteFileName 超出范围并且 byteFileName->data() 将被释放,这会导致悬空指针 this->fileName

解决这种情况的最简单方法是将this->fileName 的类型设置为QStringstd::string 或另一种实际复制 byteFileName->data() 内容的类型。

关于c++ - 确保文件名不超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15584126/

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