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