C++ 尝试动态增长静态数组c++;

C++ 尝试动态增长静态数组c++;,c++,arrays,C++,Arrays,因此,我必须在我制作的这个结构中动态增长一个静态数组(我可以使用向量,但它特别要求我使用静态数组并复制元素,所以请不要要求我使用向量) 问题是我有分割错误,我不知道为什么。当我为我的对象创建一个新实例时,它会设置一个长度为5的数组。然后在调整数组大小时运行此代码,但它不起作用 if (used == (length-1)) { length *= 2; T* newArr = new T[length]; for (int

因此,我必须在我制作的这个结构中动态增长一个静态数组(我可以使用向量,但它特别要求我使用静态数组并复制元素,所以请不要要求我使用向量)

问题是我有分割错误,我不知道为什么。当我为我的对象创建一个新实例时,它会设置一个长度为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;
    }
if(使用==(长度-1)){
长度*=2;
T*newArr=新T[长度];
for(int i=0;i
答:那么这个问题根本上是有缺陷的;)你应该使用向量;)

如果你真的想取悦你的导师,我建议你使用
malloc()
realloc()
free()
而不是“新建”和“删除”;)

同时-覆盖“newArr[]”可能会导致分段错误。如果“used”比长度大得多,“newArr[]”可能太小

只是一个猜测-使用调试器可以清楚地向您显示正在发生的事情

问:您使用的是什么编译器和调试器?

做一个简单的测试

delete[] items;

在重新分配之前

您的代码的其余部分在哪里?查看项的声明会很有帮助。我会在一秒钟内添加它。我不确定这是我的问题。我想我在创建新数组后检查了数组的最后一项在哪里断开。结果是指针错误。当我正确地重新分配数组时,我没有她的指针名为“position”,它返回了我在数组中的当前位置,但该位置没有设置为我的新数组的实例。所有操作都正常。