C++中函数调用的限制
Limits for function call in C++
我在Ubuntu上使用Qt,并进行了一项需要多次执行程序的研究测试。我决定使用线程来优化时间消耗,但当参数很大时,我遇到了问题。首先我认为这是线程或对象编程的问题,所以我决定简化事情来检测问题的根源。我找到了导致所有问题的函数。我把它放在主文件中,并用随机参数连续执行多次。它在146000-156000时间之间坠毁。(为了确保我已经用参数重新执行了这个函数,它崩溃了,但执行正常)。
我注意到,将参数对象作为全局变量可以提高时间数量(当这两个对象是参数时,它是78000,当它们是全局时,它大约是150000),其他参数是简单的整数
我使用了许多向量作为函数的局部变量,但我认为这不可能是原因,因为当函数完成处理时,它们会被破坏。
这次撞车的原因是什么?
for (int i=0;i<600000; i++){
int _trx=-1020+((rand())%2039);
int _try=-1020+((rand())%2039);
double _or=(rand()%36000)/100;
int _scale=rand()%2 -1 ;
std::cout << i <<": trans x: " << _trx << " | trans y: " << _try << " | or: " << _or << std::endl;
double _score= Test(1,_trx,_try, _or,1,0,5,5,1024);
cout <<" |score: " << _score << endl;
}
每个人都知道,在大约50000次调用之后,C++调用系统变得不可靠,您需要停止并启动另一个prorgam。
不是
C++函数调用确实有效。
重读并内化这个短语。在编程方面取得进步对你来说很重要。
在我看来,你需要解决的最大问题是你的大脑内部,而不是代码。如果当你遇到问题时,你的第一个想法是认为别人的代码(例如编译器、操作系统)或硬件是原因,那么你就不会深入编程。
一旦您准备好承认您的代码是问题,请在问题中添加更多信息,提供源代码片段、确切的错误消息和更多上下文。
从你提供的几个症状来看,我疯狂地猜测是内存泄漏,你的程序因内存耗尽而死亡,但如果没有更多的信息,没有人真的能确定。
相关文章:
- 函数调用中参数的顺序重要吗
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 变量没有改变?通过向量的函数调用
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- 我知道函数调用中存在歧义.有没有办法调用foo()函数
- 模板函数调用
- 获取从C++中同一类中的构造函数调用的方法返回的值
- 析构函数调用
- 成员函数调用和C++对象模型
- 使用共享指针的函数调用,其对象应为 const
- C++:编译时检查匹配的函数调用对?
- 函数调用C++中的参数太少
- 来自 DLL 的函数调用 [表观调用的括号前面的表达式必须具有(指向-)函数类型]
- 返回指向对象的指针的函数调用是否为 prvalue?
- C++ 如何重载 [] 运算符并进行函数调用
- 代码的效率. 转到和函数调用
- 是同一作用域的函数部分中的函数调用
- 如何封装一个函数,以便它只能由同一类中的一个其他函数调用?
- 类型擦除的std::function与虚拟函数调用的开销