我在编写的代码中收到 std::bad alloc() 异常。根据 SO 上的其他答案,我应该释放动态分配的内存,但异常仍然存在。关于我如何解决它的任何线索?
我正在附加错误出现的功能。
int count(int *S, int m, int n) { int i, j, x, y;
// We need n+1 rows as the table is consturcted in bottom up manner using // the base case 0 value case (n = 0) int **table=new int*[n+1]; for(int q=0;q< n+1;q++) table[q] = new int[m]; // Fill the enteries for 0 value case (n = 0) for (i=0; i<m; i++) table[0][i] = 1; // Fill rest of the table enteries in bottom up manner for (i = 1; i < n+1; i++) { for (j = 0; j < m; j++) { // Count of solutions including S[j] x = (i-S[j] >= 0)? table[i - S[j]][j]: 0; // Count of solutions excluding S[j] y = (j >= 1)? table[i][j-1]: 0; // total count table[i][j] = x + y; } } int answer = table[n][m-1]; delete[] table; return answer; }
我基本上是在尝试解决硬币兑换问题。n 可以大到 10^9。