我今天读到有关
然而,我一直认为
delete
和delete[]
运算符的文章,我可以看到为了释放分配给myChar
的内存,我应该调用delete
,而为了释放myCharArray
的内存,我应该使用delete[]
。然而,我一直认为
myChar
是指向大小为1的数组的指针。那么为什么我们在这种情况下使用delete
?为什么我们需要delete
呢?如果myChar
实际上是大小为1的数组,我们不能只使用delete[]
吗?char* myChar = new char;
char* myCharArray = new char[5];
delete myChar;
delete[] myCharArray;
new
应该伴随着delete
,每个new[]
应该伴随着delete[]
。实际上,你应该使用智能指针来代替。 - Rondelete[]
,它必须知道这个大小...但对于纯对象指针,没有这样的信息... - Jaa-cBase *ptr = new Derived
,那么如果你使用delete[] ptr
,编译器应该如何知道调用哪个析构函数? - Kaldrrdelete
和delete[]
的区别,而是关于它们为什么不同的原因。请翻译此内容。 - Pete Becker