所以我必须在我制作的这个结构中动态增长一个静态数组(我可以使用向量,但它特别要求我使用静态数组并复制元素,所以请不要让我使用向量)。
问题是我得到分段错误,我不知道为什么。当我创建对象的新实例时,它会设置一个长度为 5 的数组(当前为 5 进行测试)。然后我在调整数组大小时运行此代码,但它不起作用。
if (used == (length-1)) {
length *= 2;
T* newArr = new T[length];
for (int i = 0; i < used; i++) {
newArr[i] = items[i];
cout << "Copied" << endl;
}
items = newArr;
}
所以它似乎将地址复制到新数组 OK 并且似乎只复制了适当数量的项目。Used 确定添加了多少项,而 length 保存了整个数组的大小。这样当我创建一个新数组时,长度应该是使用数量的两倍。当我尝试将项目分配给 newArr 时,我遇到了分段错误,所以我想知道该代码是否正确,或者它是否在那里崩溃。我已经尝试逐行调试它,但无法判断它是否在那里中断。