1
我有以下方法:C++数据与没有明显的原因改变
void Polygon::expand() {
int newSize = max * 2;
printArray(array, current);
Point* newArray = new Point[newSize];
printArray(array, current);
for (int i = 0; i <= current; i++) {
newArray[i] = array[i];
}
delete[] this->array;
array = newArray;
max = newSize;
}
printArray
是用于调试和也很简单:
void printArray(Point* array, int size) {
cout << "array\n==========" << endl;
for (int i=0; i<=size; i++) {
cout << array[i] << ": " << array[i].getX() << ", " << array[i].getY() << endl;
}
}
该方法试图扩大阵列,这是一个类型为Point*
的成员。奇怪的是运行这个时,我得到了打印:
阵列
==========
(0,0):0,0
(1,1): 1,1
(2,2):2,2
(3,3):3,3
阵列
==========
(0,0):0, 0
(1,1):1,1
(2,2):2,2
(3,5.58294e-322):3,5.58294e-322
出于某种原因,在阵列的变化最后Point
,尽管我还没有印之间的感动吧!任何想法可能导致什么?
我不明白这是如何导致打印不同点的原因,即使我打了一个。 –
当你调用UB时,不止一次,你不能指望任何理智的输出。修复你的代码,然后再给它一次。请记住,我们甚至不知道getX是什么,getY是什么。所以,我建议你也检查一下。 – dirkgently
在这种情况下,'current'保持为最大的索引,而不是实际的大小。 –