如果我不关心返回值,我是否会遇到性能问题
Do I get a performance issue, if i do not care about a return value
简介:我得到了一个函数做一些工作并返回一个布尔值。如果发生某些错误,则布尔值应为假。所以如果我想检查错误,我可以使用布尔值。但是,如果我完全确定(我知道,你永远不能完全确定,但也许你明白我的意思)这部分不会有错误,或者你只是不在乎是否有错误,因为它没有影响。
问:如果我只是没有"捕获"返回的布尔值,是否会出现一些内存泄漏或其他性能问题?
最低代码检查:
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++内存只能泄漏具有动态存储持续时间的对象,即分配了new
或std::malloc
的对象(cmp.C++11 3.7.4/1)
函数中的bool
将是临时的,换句话说,它具有自动存储持续时间 (cmp.C++11 3.7.3/1),所以忽略它是完全可以的。
函数返回值始终可以忽略,除非它们告诉您有关函数已消耗和未释放的资源的信息;例如
1) 包含指向函数分配的内存的指针的指针或结构
2) 包含指向函数打开的文件/流缓冲区的指针或结构
在选择忽略返回值之前,应始终检查函数文档。
否,不会有性能损失或内存泄漏。但是,一般来说,异常是处理C++错误的正确方法。
不,这是一个无效语句,布尔值被丢弃
您可以随意忽略它,因为返回值只是没有被使用。这只是一个 void 语句,这与在您的代码中编写2;
或identifiername;
完全相同。
它会被调用,但由于您不存储值,因此不会发生任何其他事情。
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 编译包含字符串的代码时遇到问题
- OpenMP阵列性能较差
- 递归列出所有目录中的C++与Python与Ruby的性能
- 遇到新行时,有没有办法停止istream_iterator
- 大小相等但成员数量不同的结构之间的性能差异
- 为什么constexpr的性能比正常表达式差
- 在使用GPU支持编译Tensorflow时,会遇到CUDA_TOOLKIT_PATH未绑定变量
- 如何在C++向量中奇数元素前面加上值-1,我在使用insert函数时遇到了问题
- 在类中使用随机生成器时出现性能问题
- 在 for 循环中查找问题时遇到困难
- 在main()之外初始化std::vector会导致性能下降(多线程)
- 创建结构的数组时遇到分段错误
- 代码在我的计算机上运行良好,但是在将其提交给coursera时遇到未知的信号11问题
- 为什么我遇到分段错误?
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- 这些是什么样的错误?即使我不在 Linux 上工作,我也遇到了 Linux 错误
- 海湾合作委员会 ARM 性能下降
- GCC 和 Clang 代码性能的巨大差异
- 如果我不关心返回值,我是否会遇到性能问题