Luv*_*Luv 27 c++ malloc delete-operator
int *p=(int * )malloc(sizeof(int));
delete p;
Run Code Online (Sandbox Code Playgroud)
当我们使用malloc分配内存时,我们应该使用free释放它,当我们在C++中使用new分配时,我们应该使用delete释放它.
但是如果我们使用malloc分配内存然后使用delete,那么应该会有一些错误.但是在上面的代码中,C++中没有错误或警告.
此外,如果我们使用new进行反向和分配并使用free进行释放,那么也没有错误或警告.
为什么会这样?
Cat*_*lus 33
这是未定义的行为,因为没有办法可靠地证明指针后面的内存是正确分配的(即newfor delete或new[]for delete[]).这是你的工作,以确保这样的事情不会发生.使用正确的工具,即智能指针,这很简单.每当你说delete,你做错了.
| 归档时间: |
|
| 查看次数: |
24301 次 |
| 最近记录: |