Форум программистов, компьютерный форум CyberForum.ru

Ошибка при удалении массива - C++

Восстановить пароль Регистрация
 
andryshka
2 / 2 / 0
Регистрация: 05.12.2013
Сообщений: 81
21.05.2014, 21:48     Ошибка при удалении массива #1
Проблема в том, что при попытке добавить строки удаления массивов программа вылетает, если же их нету, то всё стабильно.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
#include <iomanip>
#include  <math.h>
using namespace std;
double funcion(double);
double Lagranje(double, int, double*);
 
main()
{   
    setlocale(LC_ALL, "Russian");
    int n,m,i;
    double *massive_y, *massive_x, a, b, x;
    cout << "×èñëî Г*åèçâåñòГ*ûõ=";
    cin >> n;
    cout << "\n ×èñëî óçëîâ=";
    cin >> m;
    cout << "\n ГЌГ*Г·Г*ëî ГЁ ГЄГ®Г*ГҐГ¶ ГЁГ*òåðâГ*Г«Г*";
    cin >> a >> b;
     massive_x = new double[m];
    
     massive_y = new double[n];
 
    for (i=1; i<=m; i++)
        massive_x[i] = a+(b-a)/(m-1);
    
    for(i=1; i<=n; i++) 
        massive_y[i] = Lagranje(x, m, massive_x);
        
        
        
        
        
    delete []massive_x;
    delete []massive_y;
}
 
 
 
double function(double x)
{
    return pow(x,3.)-5.*x*x;
}
 
double Lagranje(double x_t,int n,double *x)
{
    int i,k;
    double e,p=0;
    for(k=1; k<=n; k++)
    {
            e=1.;
            for (i=1;i<=n;i++)
            if (i!=k)
                e *= ((x_t-x[i])/(x[k]-x[i]));
            p += e*function(x[k]);
    }
 return p;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2014, 21:48     Ошибка при удалении массива
Посмотрите здесь:

Ошибка при удалении єлемента из однонаправленного списка C++
C++ Ошибка при удалении в базе данных.
C++ Ошибка при удалении массива с помощью delete
Ошибка при удалении динамического массива C++
C++ Возникает ошибка при удалении динамического массива символов в деструкторе класса
Ошибка при удалении динамически выделенной памяти C++
C++ Ошибка при удалении динамического массива
Ошибка с0000005 при удалении класса-матрицы C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
schdub
 Аватар для schdub
2902 / 1246 / 222
Регистрация: 19.01.2009
Сообщений: 3,216
Завершенные тесты: 1
21.05.2014, 22:11     Ошибка при удалении массива #2
andryshka,
C++
1
2
3
4
5
6
massive_x = new double[m];
massive_y = new double[n];
for (i=1; i<=m; i++)
    massive_x[i] = a+(b-a)/(m-1);
for(i=1; i<=n; i++)
    massive_y[i] = Lagranje(x, m, massive_x);
Масивы в С/С++ начинаются с нуля, следовательно вы выходие за границы массива и портите память.
zss
Модератор
Эксперт С++
 Аватар для zss
5950 / 5555 / 1787
Регистрация: 18.12.2011
Сообщений: 14,199
Завершенные тесты: 1
21.05.2014, 22:13     Ошибка при удалении массива #3
Цитата Сообщение от andryshka Посмотреть сообщение
for (i=1; i<=m; i++)
massive_x[i] = a+(b-a)/(m-1);
for(i=1; i<=n; i++)
massive_y[i] = Lagranje(x, m, massive_x);
C++
1
2
3
4
for (i=0; i<m; i++)
        massive_x[i] = a+(b-a)/(m-1); 
for(i=0; i<n; i++) 
        massive_y[i] = Lagranje(x, m, massive_x);
Yandex
Объявления
21.05.2014, 22:13     Ошибка при удалении массива
Ответ Создать тему
Опции темы

Текущее время: 18:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru