如果我不关心返回值,我是否会遇到性能问题

Do I get a performance issue, if i do not care about a return value

本文关键字:遇到 性能 问题 不关心 返回值 如果 是否      更新时间:2023-10-16

简介:我得到了一个函数做一些工作并返回一个布尔值。如果发生某些错误,则布尔值应为假。所以如果我想检查错误,我可以使用布尔值。但是,如果我完全确定(我知道,你永远不能完全确定,但也许你明白我的意思)这部分不会有错误,或者你只是不在乎是否有错误,因为它没有影响。

问:如果我只是没有"捕获"返回的布尔值,是否会出现一些内存泄漏或其他性能问题?

最低代码检查:

bool my_func(/*some variables*/)
{
    if(/*error-condition*/)
    {
        //do something
        return false;
    }
    else if(/*other error-condition*/)
    {
        //do something
        return false;
    }
    return true;
}

int main(void)
{
    my_func(/*variables*/);
    return 0;
}

注释:不会返回任何编译或运行时错误或未处理的异常

如果函数不是指向从函数内部分配且未在该函数中释放的内存的指针,则可以安全地忽略函数的返回值。

在C++内存只能泄漏具有动态存储持续时间的对象,即分配了newstd::malloc的对象(cmp.C++11 3.7.4/1)

函数中的bool将是临时的,换句话说,它具有自动存储持续时间 (cmp.C++11 3.7.3/1),所以忽略它是完全可以的。

函数返回值始终可以忽略,除非它们告诉您有关函数已消耗和未释放的资源的信息;例如

1) 包含指向函数分配的内存的指针的指针或结构

2) 包含指向函数打开的文件/流缓冲区的指针或结构

在选择忽略返回值之前,应始终检查函数文档。

否,不会有性能损失或内存泄漏。但是,一般来说,异常是处理C++错误的正确方法。

不,这是一个无效语句,布尔值被丢弃

您可以随意忽略它,因为返回值只是没有被使用。这只是一个 void 语句,这与在您的代码中编写2;identifiername;完全相同。

它会被调用,但由于您不存储值,因此不会发生任何其他事情。