DATA * p = new DATA;
VC6通不过,IC6警告
DATA * p = new DATA[1];
VC6过,IC6过
从字面来看,对于处理new TYPE和new TYPE[n]是有区别的。但是我们又知道,这种用法在别的类型(非数组类型)是有效的。
int * p = new int;
int * p = new int[5];
我也只好怀疑是编译器的问题。
但是看了
ross33123()
的回帖,算有点领悟:
DATA * p = new DATA;
等价与:
int (*p)[5] = new int [5];
new int [5] 返回的是int *;
所以跟 int(*)[5]是两马事。
DATA * p = new DATA[1]
等价与:
int (*p)[5] = new int [5][1];
new int [5][1]返回的是 int (*)[5];符合,成功!