Frage

Ich bin nur mit einer Made bootbare C ++ Kernel in Visual Studio 2010 herum spielen.

Ich habe zu dem Punkt, wo ich neue haben und löschen geschrieben und Dinge wie dynamisch zugewiesenen Arrays arbeiten. Ich kann STL-Listen, zum Beispiel. Ich kann sogar sortieren sie, nachdem ich eine Memcpy Routine geschrieben. Das Problem ist, wenn ich den std :: vector Typen verwenden. Einfach die Konstruktion des Vektors der Kernel ab in lalaland Sends.

Offensichtlich Ich vermisse eine Funktion Implementierung von irgendeiner Art, aber ich sah durch STL Suche für sie und kam mit leeren Händen. Es scheitert an der push_back:

vector<int> v;
v.push_back(1);

und verschwindet in den Äther.

Jede Vermutungen, was mir fehlt?

Bearbeiten Ja, es ist Vektor von int. Sorry für die Verwirrung. Nicht nur das, aber es ist nicht der Konstruktor es nicht auf, es ist ein Aufruf an push_back.

War es hilfreich?

Lösung

Wie pro unsere Diskussion über, die Schaffung eines

std::vector<mySimpleStruct> v;

anstelle eines

std::vector<int> v;

erscheint korrekt zu arbeiten. Das muss bedeuten, das Problem ist, mit etwas in Ihrer Standard-Template-Bibliothek std :: vector in der Spezialisierung einiger Funktionen getan. Ich nehme an, Sie mit Template-Spezialisierung vertraut sind schon, aber falls Sie sich nicht:

http://www.parashift.com/c++ -FAQ-lite / templates.html # faq-35.7

Auch, wenn Sie herausgefunden haben, wo das eigentliche Problem ist, könnten Sie kommen zurück und veröffentlichen die Antwort hier? Sie haben mich neugierig zu wissen, wo das eigentliche Problem ist jetzt, und die Antwort hilfreich sein für andere, die versuchen, ihren eigenen OS-Kernel zu bauen.

Andere Tipps

Stab im Dunkeln: Haben Sie new[] und delete[] umgesetzt? Es wird eine Liste mit new zu einem Zeitpunkt ein Element erstellen, während ein Vektor wahrscheinlich größere Speicherblöcke mit new[] zuteilen wird.

Haben Sie eine benutzerdefinierte allocator oder eine Standard?

Sie könnten versuchen, einen benutzerdefinierten ein mit genau dem, was Zuweisungen Vektor peforms zu sehen, dass Ihre Implementierung des Speichermanagers zerstören könnte (dies ist wahrscheinlich das, was tatsächlich ausfällt).

Und ja, bitte Post zurück, wenn Sie es lösen -. Es alle anderen OSdevers da draußen hilft

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top