求解惑(改变一维数组长度的函数)
  • 板块灌水区
  • 楼主Luoyilun118
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/11/18 17:04
  • 上次更新2023/11/18 18:37:28
查看原帖
求解惑(改变一维数组长度的函数)
1097830
Luoyilun118楼主2023/11/18 17:04

在VS022里一运行就会蹦出“Debug Assertion Failed”。但如果把 delete[] a; 这句删去,就正常了,这是为啥呀(´。_。`)

int Min(int a, int b)
{
    return (a > b ? b : a);
}
template<class T>
void changeLength1D(T a[], int oldLength, int newLength)
{
    T* temp = new T[newLength];//新数组
    int number = Min(oldLength, newLength);//需要复制的元素个数
    copy(a, a+number, temp);
    delete[] a;
    a = temp;
}

void test01()
{
    int a[] = { 1,2,3,4,5 };
    changeLength1D<int>(a, 5, 3);
    for (int i = 0; i < 3; i++)
    {
        cout << a[i] << " ";
    }
}
2023/11/18 17:04
加载中...