在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] << " ";
}
}