Я 6 часов потратил на поиск ошибки.
И обнаружил ну совсем невменяемую хрень.
Итак, есть 2 класса:
Код: Выделить всё
класс2{
float* массив2
void f2(){
// наращивание массива2
массив2 = new float[цифра]
}
}
класс1{
float* массив1
класс2 к2.
void f1(){
// наращивание массива1
массив1 = new float[цифра]
}
}
Индексация в процедуре заполнения первого массива - абсолютно верная.
Адреса массивов охренительно далеко друг от друга.
Я проверил и перепроверил всё - никаких зацепок, в чём причина. Только иррациональное следствие: пишем в первый массив, и в одном случае из ста сбивается нулевой элемент второго массива.
Операция переноса значений в функциях f1 и f2 - тоже в порядке, я расставлял ловушки везде, где только можно, и однозначно установил место в программе, в котором нулевой элемент сбивается - СРАЗУ ЖЕ после заполнения первого массива.
Конечно, я могу использовать vector вместо массивов, и наверняка фигня исчезнет, но не хочется оставлять эту ошибку непонятой, особенно с учётом 6 часов борьбы с этим привидением.