5
我試圖在不復制內存的情況下獲取支持Eigen::Matrix
的內存的所有權。 data()
方法保留所有權。我已經想通了如何做到這一點的唯一方法是通過交換映射數組:從特徵矩陣中外化數據
Matrix<float, Dynamic, Dynamic, RowMajor> mat = m1 * m2;
// want ownership of mat's float*
float* data = mat.data(); // get the pointer
new (&mat) Eigen::Map<Matrix3f>(NULL); // swap the mapped array with anything else
// do something with data
它看起來並不像這將導致引擎蓋下副本,但我還不能肯定。我也不確定這是否安全。
爲什麼在您需要其數據時不要只保留特徵矩陣對象? – rubenvb
@rubenvb我需要把數據交給另一個我沒有那麼多控制的環境。 – ZachB
這是一個非常不明確的說法。我仍然沒有看到讓Eigen對象保持活躍狀態的問題,而其他環境則是如此。 – rubenvb