C++中函数调用的限制

Limits for function call in C++

本文关键字:函数调用 C++      更新时间:2023-10-16

我在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++函数调用确实有效。

重读并内化这个短语。在编程方面取得进步对你来说很重要。

在我看来,你需要解决的最大问题是你的大脑内部,而不是代码。如果当你遇到问题时,你的第一个想法是认为别人的代码(例如编译器、操作系统)或硬件是原因,那么你就不会深入编程。

一旦您准备好承认您的代码是问题,请在问题中添加更多信息,提供源代码片段、确切的错误消息和更多上下文。

从你提供的几个症状来看,我疯狂地猜测是内存泄漏,你的程序因内存耗尽而死亡,但如果没有更多的信息,没有人真的能确定。