视觉C++ 2010 在释放数组指针时速度很慢
Visual C++ 2010 slow at freeing array pointers
在我的应用程序结束时,我只需调用以下内容进行清理。
delete [] array1;
delete [] array2;
delete [] array3;
delete [] array4;
delete [] array5;
delete [] array6;
delete [] array7;
delete [] array8;
delete [] array9;
delete [] array10;
delete [] array11;
delete [] array12;
delete [] array13;
指向堆上数组的 13 个指针。在调试模式下需要绝对年龄...比如 3-5 分钟,这应该是几乎瞬时的。什么给?
更新:我假设我正在删除一个 C 样式结构数组(即只有基元和指针的结构),但其中两个数组中有hash_maps,需要花费大量时间来清理。
如果数组包含带有析构函数的对象,则 delete[] 调用每个析构函数。
如果数组很大,则可能必须先从虚拟内存中交换对象,然后才能调用其析构函数。
根据您的配置,delete[] 可能会检查数组的边界区域,以查看您是否进行了任何越界写入。
通常,您应该完全忽略调试模式下的执行时间,但我理解为什么您会想知道仅释放数组就需要 3-5 分钟。
有几件事可能会发生。 尝试在程序变慢几次时停止程序,并查看调试器中堆栈上的内容。
回想一下,数组的元素类型的析构函数将为每个元素调用一次。
如果您担心性能,请在探查器中运行代码。如果不谈论探查器,就不能谈论性能。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 何时在引用或唯一指针上使用移动语义
- QMetaObject invokeMethod的基于函数指针的语法
- 如何从 std::atomic 中提取指针 T<T>?
- 如何在 C# 中映射双 C 结构指针?
- 将统一的内存指针传递给内核会减慢程序的速度
- 通过使用指针/引用,在C++中使用向量加快计算速度
- C++为了取代GetPixel(),尝试使用位图+指针来加快速度
- 访问堆栈变量的速度比取消引用指针慢
- 视觉C++ 2010 在释放数组指针时速度很慢
- 2D数组中指向元素的指针减慢了代码的速度
- 指针与c++中的可变速度