Вы неправильно инициализируете свой массив. Это утверждение:
double *array = new double(SIZE);
Выделяет один дубль и инициализирует его значением SIZE. Что вы должны сделать, это использовать распределение массива:
double *array = new double[SIZE];
Другая общая проблема заключается в том, что вы редко когда-либо хотите назначить динамически выделенную память для необработанного указателя. Если вы хотите использовать базовые типы вместо объектов более высокого уровня, таких как std::vector
, вы всегда должны использовать умный указатель:
boost::scoped_array<double> array(new double[SIZE]);
Теперь массив будет автоматически освобожден независимо от того, как вы покидаете свою область (т. Е. Из вновь добавленного возврата или из исключения).