C++ 尝试动态增长静态数组c++;
因此,我必须在我制作的这个结构中动态增长一个静态数组(我可以使用向量,但它特别要求我使用静态数组并复制元素,所以请不要要求我使用向量) 问题是我有分割错误,我不知道为什么。当我为我的对象创建一个新实例时,它会设置一个长度为5的数组。然后在调整数组大小时运行此代码,但它不起作用C++ 尝试动态增长静态数组c++;,c++,arrays,C++,Arrays,因此,我必须在我制作的这个结构中动态增长一个静态数组(我可以使用向量,但它特别要求我使用静态数组并复制元素,所以请不要要求我使用向量) 问题是我有分割错误,我不知道为什么。当我为我的对象创建一个新实例时,它会设置一个长度为5的数组。然后在调整数组大小时运行此代码,但它不起作用 if (used == (length-1)) { length *= 2; T* newArr = new T[length]; for (int
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;
}
if(使用==(长度-1)){
长度*=2;
T*newArr=新T[长度];
for(int i=0;i
答:那么这个问题根本上是有缺陷的;)你应该使用向量;)
如果你真的想取悦你的导师,我建议你使用malloc()
,realloc()
和free()
而不是“新建”和“删除”;)
同时-覆盖“newArr[]”可能会导致分段错误。如果“used”比长度大得多,“newArr[]”可能太小
只是一个猜测-使用调试器可以清楚地向您显示正在发生的事情
问:您使用的是什么编译器和调试器?做一个简单的测试
delete[] items;
在重新分配之前您的代码的其余部分在哪里?查看项的声明会很有帮助。我会在一秒钟内添加它。我不确定这是我的问题。我想我在创建新数组后检查了数组的最后一项在哪里断开。结果是指针错误。当我正确地重新分配数组时,我没有她的指针名为“position”,它返回了我在数组中的当前位置,但该位置没有设置为我的新数组的实例。所有操作都正常。