EAccessViolation при удалении динамических массивов!!!
От: DmitriAl  
Дата: 13.11.02 15:11
Оценка:
Помогите, пожалуйста, со следующей проблемой: я создаю динамически несколько массивов:

float* array1 = new float[5000];
float* array2 = new float[5000];
float* array3 = new float[5000];

// затем веду с ними различные расчеты

// при выходе из программы я их удаляю

delete [] array1;
delete [] array2;
/* здесь возникает ошибка: массивы array1 и array2 удаляются удачно, а при удалении массива array3 компилятор выдает ошибку следующего содержания: Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 004A8A5C in module 'Project1.exe'. Read of address 3AAC5BA4'. Process stopped. Use Step or Run to continue. */ 
delete [] array3;


Я не привожу весь исходник, чего я там делаю с этими переменными, т.к. это бессмысленно. Объясните, пожалуйста, вообще в каких случаях может выползать такая ошибка? Что может повлиять на этот AccessViolation? Буду ОЧЕНЬ благодарен за помощь!
Re: EAccessViolation при удалении динамических массивов!!!
От: Fantasist  
Дата: 13.11.02 19:03
Оценка:
Здравствуйте DmitriAl, Вы писали:

DA>Помогите, пожалуйста, со следующей проблемой: я создаю динамически несколько массивов:


DA>Я не привожу весь исходник, чего я там делаю с этими переменными, т.к. это бессмысленно.


Боюсь, именно здесь и кроется ошибка. Очень вероятно, что вы перезаписываете, например, за пределы array2 (где-то в программе array2[5000]=400), и это значение записывается поверх array3. Используйте std::vector<foat> — это избавит вас от многих проблем.
Re[2]: EAccessViolation при удалении динамических массивов!!
От: Kirill Shepelev Россия  
Дата: 13.11.02 21:13
Оценка:
DA>>Помогите, пожалуйста, со следующей проблемой: я создаю динамически несколько массивов:

в билдере есть CodeGuard, настраивается в опциях проекта. В таких вещах он выдает,
где у вас произошел выход за границы выделенной памяти, или утечка и всякие такие вещи.
пишется в CodeGuard Log
Так можно отловить.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.