如果我不关心返回值,是否会出现性能问题?

时间:2013-09-23 13:54:02

标签: c++

简介:我有一个功能做一些工作并返回一个bool。如果发生一些错误,bool应该是假的。所以我可以使用bool,如果我想检查错误。但是,如果我完全确定(我知道,你永远不能完全确定,但也许你明白我的意思),这一部分不会出现任何错误,或者你只是不关心是否存在,因为它没有影响。

问题:如果我不“抓住”返回的bool,是否会出现内存泄漏或其他性能问题?

最低 Codeexampe:

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;
}

评论,不会返回任何编译或运行时错误或未处理的异常

6 个答案:

答案 0 :(得分:16)

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

答案 1 :(得分:6)

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

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

答案 2 :(得分:6)

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

1)包含指向由函数

分配的内存的指针的指针或结构

2)包含指向函数

打开的文件/流缓冲区指针的指针或结构

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

答案 3 :(得分:2)

不,没有性能损失或内存泄漏。 但是,通常例外是在C ++中处理错误的正确方法。

答案 4 :(得分:2)

不,这是一个无效声明,bool被丢弃

答案 5 :(得分:1)

您可以随意忽略它,因为返回值不会被使用。 这只是一个无效声明,与您在代码中编写2;identifiername;完全相同。

它会被调用,但由于你没有存储该值,所以不会发生任何其他事情。