Я пытался заставить кусок кода перераспределить огромную неуправляемую матричную структуру (а именно std::vector<std::vector<T> >
) в эквивалентную управляемую структуру (cli::array<T,2>
). Поскольку я не могу удерживать обе структуры в памяти одновременно, я решил записать в файл и прочитать структуру обратно. Проблема в том, что как только я удаляю исходную матрицу, и, следовательно, память, пытающаяся выделить управляемую память для матрицы, терпит неудачу.
Я полагаю, что это может иметь какое-то отношение к куче разных сред выполнения cpp vs clr. Но не могу найти конкретных деталей. Возможно ли, что среда выполнения cpp сохраняет пространство кучи, что мешает куче clr выделить матрицу обратно? Если да, то можно ли заставить среду выполнения cpp очистить пространство кучи, чтобы освободить место для кучи clr.
Теперь, чтобы уточнить, матрица назначения должна быть двумерным массивом, а не зубчатым массивом. Я знаю, что это проблема, которую нельзя изменить. В противном случае я мог бы перемещать матрицу меньшими кусками.
Заранее спасибо.