new 表达式只可用于赋值或当作参数
10.10.2 ID_oddNew
new 表达式只应作为“=”的直接右子表达式,或直接作为参数,其他形式均有问题。
本规则对“placement new”表达式不作要求。
示例:
int i = *new int(10); // Non-compliant, memory leak
int& j = *new int(10); // Non-compliant
delete &j; // Very odd
char* p = new char[10] + 5; // Non-compliant
delete[] p - 5; // Very odd
if (new int[10]) { // Non-compliant, memory leak
....
}
这些问题多数是由笔误或错误的宏展开造成的。