Простой: просто отследите вызовы в отладчике до вашего деструктора.
Вы увидите, что первый уровень:
template<class Stepper, class System, class State, class Time>
size_t integrate_const(
Stepper stepper, System system, State &start_state,
Time start_time, Time end_time, Time dt)
, который после несколькихпромежуточные шаги содержат цикл:
while( less_eq_with_sign( static_cast<Time>(time+dt) , end_time , dt ) )
{
obs( start_state , time );
st.do_step( system , start_state , time , dt );
...
, найденный в usr/include/boost/numeric/odeint/integrate/detail/integrate_const.hpp:59
, и, к сожалению, все параметры передаются через значение, а не ссылку вповысить кодТаким образом, он будет создавать и уничтожать множество временных объектов на основе того, который вы создали.
Если вы хотите динамически размещать массивы, я бы рекомендовал использовать std::vector
, потому что для решения этой проблемы с помощью массивов в стиле C потребуетсямного времени для отладки.