Próbuję przejąć na własność pamięć wspierającą Eigen::Matrix
bez kopiowania pamięci. Metoda data()
zachowuje własność. Jedynym sposobem mam zorientowali się, jak to zrobić jest odwzorowany przez zamianę tablicy:Uzewnętrznianie danych z macierzy Eigen
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
To nie wygląda to powoduje kopię pod maską, ale nie jestem pozytywne. Nie jestem też pewien, czy to jest bezpieczne.
Dlaczego po prostu nie utrzymywać obiektu matrycy Eigen przy życiu, gdy potrzebujesz jego danych? – rubenvb
@rubenvb Muszę przekazać dane do innego środowiska, w którym nie mam takiej kontroli. – ZachB
To bardzo niejasne stwierdzenie. Nadal nie widzę problemu z utrzymaniem obiektu Eigen przy życiu, podczas gdy inne środowisko robi to samo. – rubenvb