我有一个像这样的类(假设所有malloc都成功了)

class CMyClass
{
public:
  CMyClass()
  {
  lpData = malloc(128);
  };

  ~CMyClass()
  {
  free(lpData);
  };

public:
  LPVOID lpData;
};

然后我执行这个:
CMyClass *lpList = new CMyClass[32768];

delete [] lpList;

问题在于,在x86中,代码可以正常且快速地运行(在调试和发布版本中需要花费几毫秒的时间),但是在x64中,delete调用大约需要15秒才能释放所有内存。

O.S.是Win7 x64。

提示将不胜感激。

问候,
毛罗

最佳答案

如果通过调试器运行测试应用程序,则可能会遇到Windows调试堆出现一些性能问题的情况。将_NO_DEBUG_HEAP=1添加到调试对象的环境设置中(在Visual Studio 20xx下的“项目属性”->“配置属性”->“调试”->“环境”属性中),看看是否可以改善释放性能。

关于c++ - X64 Free上的性能较慢,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6551621/

10-12 03:03