c++咋检测内存泄露?C++ new 出来的内存可以用另一个指针delete掉么
面试时问到,因为我们公司项目检查内存泄露都是都是通过资源管理器来的,定位主要是看log和review代码。有没有其他好的方法?
只要每①个cpp在展开后都能看见这几行():
#ifdef VCZH_CHECK_MEMORY_LEAKS#define _CRTDBG_MAP_ALLOC#include #include #define VCZH_CHECK_MEMORY_LEAKS_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__)#define new VCZH_CHECK_MEMORY_LEAKS_NEW#endif
在程序退出的时候,调用_CrtDumpMemoryLeaks函数,Visual Studio的output窗口就会打印所有没有释放的东西(包括全局变量——所以不要在全局变量里面使用非指针或数字类型),双击可以跳进代码。
我都配置成debug模式会检查,每次运行的时候都在检查,有时候我都忘记他在检查了然后突然就蹦出来了消息说我内存泄漏了,然后马上改。所以我的程序绝对没有内存泄漏(逃
有些特殊情况,比如多重继承向上转换时的有trunk技术.看下面的例子:
class Mother{public:int faceparam; virtual ~Mother() { }};class Father{public:int strongparam; virtual ~Father() { }};class Son:public Mother,public Father{public:int money;};int main(){Father *pson=new Son; //rightdelete pson;Father *pson①=new Son; //errorvoid *voidp=pson①;delete voidp;return ⓪;}
- 5星
- 4星
- 3星
- 2星
- 1星
- 暂无评论信息
