use*_*063 2 c++ null qt return
在我的代码中,我使用了一种方法getNumberOfP_ForAdd().此方法打开一个文件并返回XMLDocumentWrapper*.
XMLDocumentWrapper* Tab::getNumberOfP_ForAdd()
{
QString defaultName = GuiUtil::getLastPath();
QString fileName = QFileDialog::getOpenFileName(this, "Open " + displayName + " File",
defaultName, displayName + " Files (*." + fileSuffix + ")", 0, 0);
if (fileName.isNull() || fileName.isEmpty()) {
qDebug() << "Load" << displayName << "aborted.";
return NULL;
}
GuiUtil::setLastPath(fileName);
// Open file
XMLDocumentWrapper* inputDoc = XMLDocumentWrapper::readFromFile(fileName);
if (inputDoc == NULL) {
qDebug() << "Load" << displayName << "aborted.";
return NULL ;
}
return inputDoc;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试读取文件时,我首先检查了两件事:Wheather
(fileName.isNull() || fileName.isEmpty())
Run Code Online (Sandbox Code Playgroud)
和
(inputDoc == NULL)
Run Code Online (Sandbox Code Playgroud)
如果这些陈述是真的,我会这样做
return NULL;
Run Code Online (Sandbox Code Playgroud)
我可以简单地返回一个NULL-Ptr,或者我会遇到问题吗?我是否必须再次释放该指针?
如果函数的返回类型是指针,则可以返回空指针.
如果调用者检查返回值并处理返回值为null的情况 - 那么应该没有任何问题.如果调用者试图取消引用该指针,则会发生问题.
函数返回指针的事实并不一定意味着开发人员需要释放内存.指针可以指向任何东西,包括堆栈和全局变量.开发人员应该查看函数的文档,以确保如何处理返回值.无论如何,删除空指针没有问题,但是,如果她/他需要在第一个位置解除分配,应该看看.
我可以简单地返回NULL-Ptr吗?
是
我这样做会遇到问题吗?
仅当您尝试在该指针上调用方法时,这才是不确定的行为。
我是否必须再次释放该指针?
不,使用delete或free在NULL指针上有效,但不必要。