Что я делаю не так, почему не удаляется память выделенная в другой функции? Если делать глобальными double *fact; и double *deg; то так же не могу удалить выделенную память. Можно не удалять но тогда я думаю в памяти копится мусор, а так не правильно.
| Код | #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <math.h> #include <clocale>
double* degris(double x, int p) { double *deg = new double[p]; deg[0] = 1; deg[1] = x; int i; for(i=2; i<p; i++) deg[i] = deg[i-1]*x; return deg; } double* fact_l(int n) { double *fact = new double[n]; fact[0] = 1; int i; for(i=1;i<n; i++) fact[i] = fact[i-1] * (double)i; return fact; } int main() { setlocale(LC_CTYPE,"Russian");
double *fact; double *deg;
double delta = 1, m_exp, sum_exp=0, x; int n = 0; printf("Введите число от которого будите вычислять exp(x)\n"); printf("x = "); scanf("%Lf",&x); m_exp = exp(x); n=1; while(delta != 0){ sum_exp = 0; printf("Точтность 1.e-%d \n",n); /*Посчитаем все степени до заданного порядка*/ deg = degris(x,n); /*Факториалы*/ fact = fact_l(n);
printf("%.*Lf \n",n,m_exp);
for(int i = n-1; i >= 0; i--) sum_exp += deg[i]/fact[i];
printf("%.*Lf \n",n,sum_exp); delta = fabs(m_exp-sum_exp); printf("Погрешность = %.*Lf \n",n,delta); n++; //delete[] deg; ошибка!!!! //delete[] fact; ошибка!!!! } system("pause"); }
|
вот и ошибка
| Код | Windows has triggered a breakpoint in Exp.exe.
This may be due to a corruption of the heap, which indicates a bug in Exp.exe or any of the DLLs it has loaded.
This may also be due to the user pressing F12 while Exp.exe has focus.
The output window may have more diagnostic information.
|
|