Jas*_*ick 1 c++ malloc free constructor
我正在读这个问题:
在什么情况下我使用malloc vs new?
有人提出使用malloc的一个原因是你要免费使用.
我想知道:在C++中混合使用免费调用和构造函数初始化是否有效?
即
我能说......么:
my_type *ptr = new my_type;
free(my_type);
Run Code Online (Sandbox Code Playgroud)
这在某种程度上是无效的还是更糟糕的:
my_type *ptr = new my_type;
delete my_type;
Run Code Online (Sandbox Code Playgroud)
除了它不是c ++ ish的事实?
同样,你可以反其道而行之吗?你可以说
my_type *ptr = (my_type *)malloc(sizeof(my_type));
delete my_type;
Run Code Online (Sandbox Code Playgroud)
请合并,如果这是重复,我搜索但没有看到关于malloc/delete/new/free询问的问题.
ken*_*ytm 11
不,它无效.无法保证new将使用malloc或delete将使用free.
而且,使用free而不是delete将跳过my_type的析构函数.如果my_type它本身持有一些资源,那些将被泄露.类似地,malloc将跳过构造函数,因此变量可能处于无效状态.
在C++中混合使用空闲调用和构造函数初始化是否有效?
不它不是.
malloc,calloc,realloc - >免费
新 - >删除
new [] - > delete []
| 归档时间: |
|
| 查看次数: |
798 次 |
| 最近记录: |