Ich verwende ein boost :: multi_array, um einige Daten zu speichern. Ich mache meine ganze Arbeit an den Daten mit Ansichten, weil ich mit Datenscheiben in verschiedenen Dimensionen arbeiten muss.boost :: multi_array Speicherverwaltung und Gültigkeitsbereich
Meine Frage ist, wie wird das Gedächtnis von boost :: multi_array verwaltet?
Insbesondere möchte ich mit einer Kopie einer Scheibe (Ansicht) meiner Daten arbeiten. Daher würde Ich mag so etwas tun:
typedef boost::multi_array<double, 2> MyContainer;
typedef MyContainer::array_view<1>::type Slice1D;
Slice1D copy(const Slice1D & slice)
{
MyContainer copyMemory(slice);
Slice1D sliceCopy = copyMemory[boost::indices[0][range()]];
return sliceCopy;
}
void main()
{
...
Slice1D copySlice = copy(mySlice);
}
Ich mag würde wissen, ob dies falsch ist, weil die multi_array die Kopie enthält den Gültigkeitsbereich verlässt, wenn die Kopierfunktion zurückkehrt. Oder ist es in Ordnung, weil multi_array Smartpointer oder Referenzzählung verwendet, um den Überblick zu behalten?