我有一个像这样的类(假设所有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/