c++中new不带括号,delete带括号,这可能吗?

Is this possible that new without bracket but delete with bracket in C++

本文关键字:delete new c++      更新时间:2023-10-16

我知道在c++中创建数组使用new []然后删除这个数组使用delete []

我想知道我是否创建了一个对象然后用delete []

删除它
Test * a = new Test;
delete [] a;

嗯…它的工作原理……但它安全吗?我应该使用没有括号的delete吗?

不行。行为最多是未定义的。

编辑:

信息链接受欢迎添加:http://web.archive.org/web/20080703153358/http://taossa.com/index.php/2007/01/03/attacking-delete-and-delete-in-c

这是未定义的行为,最好避免。
IIRC MSVC处理(或至少用来处理)新数组和新数组是相同的,这是(或曾经)一个令人愉快的迁移头痛的来源;-)