mit diesem Code:Warum ist std :: list auf C++ 11 größer?
#include <iostream>
#include <list>
int main() {
std::cout << sizeof(std::list<void*>) << std::endl;
};
konnte ich, dass 4.7 die Größe std::list<void*>
auf 98 C auf GCC bemerken ++ ist 16 Bytes, und seine Größe auf 11 C++ ist 24 Bytes.
Ich habe mich gefragt, was sich auf std :: list geändert hat, das es größer gemacht hat.
Aus technischer Sicht ist dieses Verhalten vollständig implementierungsspezifisch. Die Bibliotheksautoren könnten, wenn sie möchten, willkürlich entscheiden, die Klasse ohne jede Rechtfertigung größer zu machen. Es ist wahrscheinlich keine gute Idee, irgendeinen Code zu schreiben, der von der Größe einer Liste abhängt, die genau 16 Bytes ist; Was hast du gemacht, wo das tatsächlich einen Fehler verursacht hat? – templatetypedef
Werfen Sie einen Blick auf hier: http://en.cppreference.com/w/cpp/container/list Sie werden sehen, einige Mitgliedstypen in C++ 11 in Std :: Liste geändert haben. – dexametason
Wahrscheinlich haben sie die Listengröße zwischengespeichert. 24 Bytes sind drei 64-Bit-Werte - ein Startzeiger, ein Endzeiger und eine Größe. – Borealid