Помогите, пожалуйста, со следующей проблемой: я создаю динамически несколько массивов:
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? Буду ОЧЕНЬ благодарен за помощь!
Здравствуйте DmitriAl, Вы писали:
DA>Помогите, пожалуйста, со следующей проблемой: я создаю динамически несколько массивов:
DA>Я не привожу весь исходник, чего я там делаю с этими переменными, т.к. это бессмысленно.
Боюсь, именно здесь и кроется ошибка. Очень вероятно, что вы перезаписываете, например, за пределы array2 (где-то в программе array2[5000]=400), и это значение записывается поверх array3. Используйте std::vector<foat> — это избавит вас от многих проблем.