内存泄露产生:没有释放在堆中申请的内存。
从makecat函数返回一个指针,之后再main函数里释放内存。
我认为,最好封装在函数里,new和delete看起来才有对称感。
还需要再改进。
既然提到了,就说一下迷途指针和内存泄露的原理和避免方法:
迷途指针:将delete用于指针,但没有将指针置为空而引发的。说白了,就是搞不清指针指向的内存是否被释放了。(这时,如果再次释放,或者让指针指向别的内存地址,都可能会导致内存泄露。)避免的方法是养成良好的编程习惯:申请指针的时候就对指针进行初始化,如果不知道初始值是什么,就先置0;同理,delete删除指针指向的内存后,也要把指针重新置0,这时,如果对空指针delete,编译器会自动跳过不执行。
内存泄露:1,重复delete。2,引用局部函数的变量。3,重新给指针赋值之前没有释放它原来指向的内存。
说白了,就是没有释放在堆中申请的内存,就是把内存的地址丢了。如果把内存比作房子,指针比作门牌号。就是把门牌号忘记了。
好的习惯是,结合初始化指针的习惯和置0指针的习惯,每次让指针指向别的内存之前,先判断该指针是否为空。如果不为空,说明指针还留着别的地址。其实如果new和delete养成对称的习惯,就不会导致内存泄露的。
早发现错误,早修正bug。
做个有良好编程习惯的程序员。