我正在修改一个相对较大的 C++ 程序,不幸的是,并不总是清楚我之前的人使用的是 C 还是 C++ 语法(这是在一所大学的电气工程系,我们 EE 总是想用 C 来做所有事情) ,不幸的是,在这种情况下,人们实际上可以逃脱惩罚)。
但是,如果有人创建一个对象:
Packet* thePacket = new Packet();
是否被摧毁有关系吗delete thePacket;
or free(thePacket);
?
我意识到delete调用析构函数,而free()则没有,但Packet没有析构函数。我在这里的内存管理沼泽中度过了一段可怕的时光,我认为这可能是众多问题之一。
是的,这确实很重要。
对于使用获得的内存new
you must use delete
.
对于使用获得的内存malloc
you must use free
.
new
and malloc
可以在内部使用不同的数据结构来跟踪分配内存的内容和位置。因此,为了释放内存,您必须调用了解这些数据结构的相应函数。然而,在一段代码中混合这两种类型的内存分配通常是一个坏主意。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)