Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2012, 12:54   #1
max_prorok
Форумчанин
 
Регистрация: 06.10.2011
Сообщений: 181
По умолчанию Ошибка при динамических массивах

Проблема состоит в следующем: создается 3 массива размером 4:
Код:
float *E[4], *V[4], *R[4];
Затем с клавиатуры ввожу число а, которое отвечает за размер динамических массивов:
Код:
a=Form1->Edit4->Text.ToInt();

b=a+1;
for (int i=0; i<4; i++)
{
        V[i] = new float[a];
        E[i] = new float[b];
        R[i] = new float[b];
}
a и b - определены как интовые переменные.
Затем делаю ряд вычислений...

Код:
for (int i=0; i<4; i++){
        for (int j=0; j<a; j++){
                V[i][j]=0;
                E[i][j]=0;
        }
}
for (int j=0; j<a; j++)
        {
        for (int i=0; i<4; i++)
                {
                I[i]=In*K[i];
                //тут вычисляю V[i][j] и E[i][j]
                R[i][j]=V[i][j]/I[i];
                }

        }
for (int i=0; i<4; i++)
        {
        E[i][b]=R[i][b]=0;
        for (int j=0; j<a; j++)
                {
                E[i][b]=E[i][b]+E[i][j];
                R[i][b]=R[i][b]+R[i][j];
                }
        E[i][b]=E[i][b]/a;
        R[i][b]=R[i][b]/a;
        }
После чего освобождаю память:
Код:
        for (int i=0; i<4; i++)
        {
                delete[] E[i];
                delete[] V[i];
                delete[] R[i];
        }
Компилятор все отлично компилирует. Ни единой ошибки. Программа запускается, все отлично работает. Все кроме одного но. Если ввести а-четное, то при удалении массивов всплывает вот что:
---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 2128512B in module 'BORLNDMM.DLL'. Read of address 00000000'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------

и ссылается рандомно, в зависимости от а на одну из вот этих 3 строчек:
Код:
                delete[] E[i];
                delete[] V[i];
                delete[] R[i]
Прошу обратить внимание на тот факт, что если ввести а-нечетное, то все отлично пашет.
Подскажите плиз, где тут может быть что-то не так...
max_prorok вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нарушения в динамических массивах vsafary Общие вопросы Delphi 5 03.11.2011 16:47
Задачи по динамических массивах (платная) metalheaddd Общие вопросы C/C++ 0 03.01.2011 22:31
ошибка при исполнении (что то при установке компонентов) designer999 Компоненты Delphi 0 18.10.2010 22:03
C++ наследование классов. очень простая ошибка, немогу разобраться в выводе при одинаковых массивах Sanu0074 Помощь студентам 1 02.06.2010 10:33