Gibt es eine Möglichkeit, auf die Länge zuzugreifen, bevor das Array gelöscht wird?
Nein, es gibt keine Möglichkeit, das festzustellen.
Der Standard erfordert nicht, dass sich die Implementierung an die Spezifizierung der Anzahl der Elemente erinnert, die über new
angefordert werden.
Die Implementierung kann einfach bestimmte Bitmuster am Ende zugewiesener Speicherblöcke einfügen, statt sich die Anzahl der Elemente zu merken, und könnte einfach nach dem Muster suchen, während es den Speicher freigibt.
Kurz gesagt, es ist nur eine Erläuterung Detail.
Auf einer Seite zur Kenntnis, gibt es 2 Möglichkeiten praktisch, dieses Problem zu überwinden:
- Sie können einfache Nutzung ein
std::vector
, die Sie Elementfunktionen wie size()
oder
- Sie einfach liefert kann Führen Sie die Buchhaltung selbst aus.
new
atleast weist genügend Speicher so viel wie Sie verlangten.
Sie wissen bereits, wie viel Speicher Sie angefordert haben, damit Sie die Länge leicht berechnen können. Sie können die Größe jedes Artikels mit sizeof
finden.
Total memory requested/Memory required for 1 item = No of Items
Ausgezeichnete Frage +1 –
Der beste Weg ist zu verwenden, 'std :: vector pArr (nVariable);'. Dies wird intern mit dynamischer Zuweisung zugewiesen und Sie haben '.size()' immer praktisch. –
iammilind
[C++ FAQ-Eintrag zu diesem.] (Http://www.parashift.com/c++-faq-lite/num-elems-in-new-array.html) – jrok