gpt4 book ai didi

c++ - vtk 使用越来越多的内存并且变得很慢。

转载 作者:搜寻专家 更新时间:2023-10-31 01:44:14 25 4
gpt4 key购买 nike

我在我的应用程序中遇到内存泄漏并确定它是与vtk有关的东西。我在 Windows 7 上使用 vtk 6.1.0 和 64 位的 Visual Studio 2012。

我在使用 vtk 的更多算法时遇到了这种行为。绝对不是正在使用内存的操作系统,而是 vtk。似乎在每次调用更新时,vtk 都会创建对象并将它们放入某种更新队列中,并且最终不会删除。考虑这段代码:

#include <vtkImageConstantPad.h>
#include <vtkImageData.h>
#include <ctime>

int main(int argc, char *argv[])
{
int c=0;
clock_t start;
size_t iterations = 1000;
while (c != '.'){
c = getchar();
start = clock();
for(size_t i=0; i<iterations; ++i){
vtkImageConstantPad* pad = vtkImageConstantPad::New();
vtkImageData* test = vtkImageData::New();
test->SetExtent(0,1,0,1,0,1);
test->AllocateScalars(VTK_FLOAT,1);
pad->SetInputData(test);
pad->SetOutputWholeExtent(0,2,0,2,0,2);
pad->Update(); //this is what makes it bad
pad->Delete();
test->Delete();
}
std::cout << "Time for " << iterations << ": " << static_cast<double>(clock() - start) / CLOCKS_PER_SEC << "sec" << std::endl;
}
return 0;
}

我的输出是:

Time for 1000: 0.816sec
Time for 1000: 1.879sec
Time for 1000: 3.454sec
etc.

因此每次调用 update() 都会消耗更多内存和更多时间,尽管 for 循环范围内的所有对象都会被销毁。任何人都可以在其他平台上确认这一点或知道如何解决这个问题吗?

最佳答案

经过进一步调查,我发现并不是所有的机器都会出现这个问题。最后我发现我的 Bitdefender Antivirus 以某种方式扰乱了程序并导致了这种奇怪的行为。当我关闭它时,一切都按预期工作。

关于c++ - vtk 使用越来越多的内存并且变得很慢。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23827012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com