【发布时间】:2011-11-27 07:45:36
【问题描述】:
void * intptr = new int;
delete (int *) intptr;
是否需要 (int *) 类型转换?
【问题讨论】:
-
不是重复的。这个问题是关于在通过
new[]分配的东西上使用delete和 删除指向除分配类型以外的类型的指针。在一个语句中两次调用未定义的行为。这里没有未定义的行为;new匹配delete并且类型也匹配。 -
请注意,这是一个删除 表达式,而不是运算符。因为实际上有一个删除操作符(
operator delete/operator delete[]),所以区分很重要。
标签: c++ memory-management casting