मैं स्मृति की प्रतिलिपि के बिना 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
@ रुबेनवब मुझे डेटा को दूसरे वातावरण में सौंपने की ज़रूरत है जहां मेरे पास इतना नियंत्रण नहीं है। – ZachB
यह एक बहुत अस्पष्ट बयान है। मुझे अभी भी Eigen ऑब्जेक्ट को जीवित रखने में समस्या दिखाई नहीं दे रही है जबकि अन्य पर्यावरण इसकी बात करता है। – rubenvb