可能的重复:
调用free()或delete而不是delete[]有什么危险吗? https://stackoverflow.com/questions/1612031/is-there-any-danger-in-calling-free-or-delete-instead-of-delete
我正在读这个问题:
在什么情况下使用 malloc 和 new? https://stackoverflow.com/questions/184537/in-what-cases-do-i-use-malloc-vs-new/
有人提出使用 malloc 的原因之一是如果您要使用 free。
我想知道:在 C++ 中混合自由调用和构造函数初始化是否有效?
i.e.
我能说......么:
my_type *ptr = new my_type;
free(my_type);
这是无效的还是比以下更糟糕:
my_type *ptr = new my_type;
delete my_type;
除了它不是 C++ 的事实之外?
同样,你能做相反的事吗?你可以说
my_type *ptr = (my_type *)malloc(sizeof(my_type));
delete my_type;
如果这是重复的,请合并,我搜索了但没有看到关于 malloc/delete/new/free 的问题。
不,它是无效的。无法保证new
将使用malloc
or delete
将使用free
.
此外,使用free
代替delete
将跳过my_type
的析构函数。如果my_type
本身持有一些资源,这些资源将会被泄露。相似地,malloc
将跳过构造函数,因此变量可能处于无效状态。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)