Ich versuche zu lernen, wie man einen Stapel mit einem Zeiger einfügen, aber ich bekomme einen Segmentierungsfehler.wie in einen Stapel mit einem Zeiger in C++
-5
einfügen
A
Antwort
4
Ich erhalte einen Segmentierungsfehler.
Dies ist, weil Sie nicht einen Stapel haben, nur einen unassigned Zeiger zu stapeln, die die nicht auf etwas verweisen. Damit s
stapeln Punkt, weisen Sie einen neuen Stapel
stack<int> *s = new stack<int>();
oder sie einen Stapel bilden, keinen Zeiger
stack<int> s;
und Verwendung Punkte anstelle von ->
Operator.
2
Verwenden Sie kein dynamisch zugewiesenes STL-Objekt, das Sie fast nie tun müssen.
Pointers in C++ kommen nicht initialisiert, wenn Sie wirklich wollen/müssen ein STL-Objekt auf Heap zugewiesen verwenden, dann müssen Sie es initialisieren, zB:
stack<int>* s = new stack<int>()
Wenn Sie wirklich, wirklich brauchen sie auf zuzuteilen Heap verwenden Sie dann
std::unique_ptr
, um die Notwendigkeit zu vermeiden, Speicher direkt zu verwalten.
Verwandte Themen
- 1. C++, Stapel und Zeiger der Struktur
- 2. C++ Stapel gemeinsamer Zeiger löschen Element
- 3. einen statischen Zeiger in C++
- 4. Stapel in Assembly vs Stapel in c?
- 5. Schnellste Möglichkeit, über einen Stapel in C#
- 6. Wie erstelle ich einen int Zeiger auf dem Stapel?
- 7. Implementieren Sie einen Stapel mit einem BST
- 8. Zeiger in einem volatilen struct in C
- 9. C++ kann einen Zeiger in einem Paar nicht initialisieren NULL
- 10. Wann ist es legal, mit einem Zeiger auf einen Zeiger in C zu tippen?
- 11. C - Wie konvertiert man einen Zeiger in einem Array in einen Index?
- 12. Segfault einen int-Zeiger in c aktualisieren
- 13. einen Zeiger in Boost.Python
- 14. Zeiger und Speicherzuordnung in C
- 15. Wie erfasse ich einen intelligenten Zeiger in einem Lambda?
- 16. Wie mit Zeiger auf Zeiger auf Struktur in C arbeiten?
- 17. "dieser" Zeiger in C (nicht C++)
- 18. Zeiger auf Zeiger in C++
- 19. Infix-Ausdruck in einen Stapel lesen
- 20. Thread-sicherer C++ Stapel
- 21. Problem mit der C-Callback-Funktion in C# - Wie übergibt man einen Wert an einen Zeiger?
- 22. C++ mit strcpy_s() auf einem Zeiger auf Char-Array Zeiger
- 23. Funktion Zeiger in C
- 24. Holen Sie einen Zeiger auf C++ - Funktionsbibliothek in c-Programm
- 25. Instanceof für Objekte in C++ (keine Zeiger)
- 26. Array-Zeiger in C++
- 27. Dereferenzieren einen Zeiger auf einer niedrigeren Ebene in C
- 28. Zuweisen von Werten zu einem Schlüssel in einem Zeiger auf einen Datensatz in C
- 29. Zeiger in C#?
- 30. Wie initialisiert man einen Zeiger auf eine Struktur in C?
ändern 'Stapel * s;' auf 'Stapel s;' und 's->' auf 'Wortlaut des Vermerks. Zeiger sind eine reine Expertenfunktion, die für normalen Benutzercode nicht erforderlich ist. –
Ihr Zeiger s ist ein Zeiger auf Daten des Typs stack, aber der Zeiger ist nicht auf einen Wert initialisiert. Wenn Sie also Daten zum Stapel übertragen, werden die Daten an einen zufälligen Speicherort hinzugefügt. Schreiben in zufällige Speicherorte führt zu einem Segmentierungsfehler. –
anneb
Die Bearbeitung hat die Frage komplett geändert, was die folgenden Antworten ungültig macht (und die Leser verwirrt). Das ist verpönt - tu das nicht. – chi