завершение вызывается после создания экземпляра ‘std::bad_alloc

#c #arrays

Вопрос:

Я решал проблему, которая описана ниже в коде. Это работает только для числа T=1, но когда я ставлю 2 (или выше), эта ошибка возникает при вводе второго набора чисел, которые помещаются во второй массив. Я новичок в программировании и понятия не имею, почему это происходит. Код работает для таких чисел, как: 1

 /*
Monk and Rotation
Monk loves to preform different operations on arrays, and so being the principal of Hackerearth School, he assigned a task to his new student Mishki. Mishki will be provided with an integer array A of size N and an integer K , where she needs to rotate the array in the right direction by K steps and then print the resultant array. As she is new to the school, please help her to complete the task.

Input:
The first line will consists of one integer T denoting the number of test cases.
For each test case:
1) The first line consists of two integers N and K, N being the number of elements in the array and K denotes the number of steps of rotation.
2) The next line consists of N space separated integers , denoting the elements of the array A.
Output:
Print the required array.
*/

    #include <string>
    #include <iostream>
    using namespace std;
    
    void rotateArray(int t, int n, int k, int *K, int*N, int**A){
        int *temp = new int[k];
        int *temp2 = new int[n-k];
        for(int i=0; i<k; i  ){
          temp[i] = A[t][(n-k) i];
          cout<<temp[i]<<" ";
        }
        for(int j=0; j<n-k; j  ){
          temp2[j] = A[t][j];
          cout<<temp2[j]<<" ";
        }
    }
    int main(){
        int T;
        cin>>T;
         int *K = new int [T];
         int *N = new int [T];
         int **A = new int*[T];
        for(int i=0; i<T; i  ){
            cin>>N[i]>>K[i];
            A[i] = new int [N[i]];
        for(int j=0; j<N[i]; j  ){
          int temp;
          cin>>temp;
          A[i][j] = temp;
         }
        }
      for(int k=0; k<T; k  ){
        rotateArray2(k, N[k], K[k], K, N, A);
      }
      return 0;
    }
 

Комментарии:

1. Ваша ошибка, вероятно, здесь int *temp2 = new int[n-k]; , возможно, k больше n, так что n-k отрицательно.