全局对象报内存泄露吗

C++语言 码拜 5年前 (2016-05-08) 686次浏览
const string MethodName = {
“ShellSort”,
“BubbleSort”,
“MergeSort”,
“QuickSort”,
“HalfInsertSort”,
“InsertSort”,
“SelectSort”,
“UNKNOWN”
};
然后用_CrtDumpMemoryLeaks()放在主函数第一句,然后报了8个内存泄露。就是这个地方。
各位都是怎么释放呢?
解决方案

10

只要你觉得这种不是泄露就不用管它

10

全局对象的构造是在main之前,析构是在main之后,你在主函数里dump,当然会报泄露。
不用管就行,编译器会自动析构的。

20

有可能是误报,原因是全局对象析构是在main函数结束之后,而检测的工具只检测到main结束时

20

原因是全局变量的析构函数是在main函数结束之后才执行的,因此假如在全局变量的析构函数里面delete的东西仍然会被 _CrtDumpMemoryLeaks函数当成泄露掉的资源对待。当然本人认为全局变量可以用,但是全局变量的赋值必须在main里面做,释放也是,除非那个全局变量的构造函数没有申请任何内存,所以这也是一个很好的检查方法。

10

不用管他,这种都不是的,误报了

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明全局对象报内存泄露吗
喜欢 (0)
[1034331897@qq.com]
分享 (0)