Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Forentreff 2012     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: Andere GUIs - Qt, GTK+, wxWidgets ::  Qt: Klasse als Member und nicht als Pointer deklariert -> crash  
Gehen Sie zu Seite Zurück  1, 2, 3  Weiter
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
Namenloser342
Unregistrierter




Beitrag Namenloser342 Unregistrierter 01:06:27 02.02.2012   Titel:              Zitieren

Wie gesagt, ich hatte die Variable überhaupt nichtbenutzt, daher kann das mit dem casten nicht die Antwort gewesen sein.
Ich habe dann das einfach akzeptiert und mit Zeigern weiterprogrammiert, läuft ohne Probleme.
Namenloser342
Unregistrierter




Beitrag Namenloser342 Unregistrierter 01:08:32 02.02.2012   Titel:              Zitieren

ist zwar egal, da beide Varianten nicht funktioniet haben, aber die Variable "begin_end" war ein zweielementiger array. Habe das hier falsch editiert.
LordJaxom
Mitglied

Benutzerprofil
Anmeldungsdatum: 23.11.2005
Beiträge: 5553
Beitrag LordJaxom Mitglied 08:57:18 02.02.2012   Titel:              Zitieren

Namenloser342 schrieb:
Wie gesagt, ich hatte die Variable überhaupt nichtbenutzt, daher kann das mit dem casten nicht die Antwort gewesen sein.

Diese Vermutung hat mit der Variable überhaupt nichts zu tun. So ein Verhalten tritt auf, wenn Du irgendwo anders Murks gemacht hast. Nicht mit "der Variable Murks gemacht", sondern "Murks gemacht". Wenn Du Dir den Heap zerschießt, ist dem System herzlich egal welche Variable dort mal lag oder liegen sollte.
drecksack
Mitglied

Benutzerprofil
Anmeldungsdatum: 14.05.2008
Beiträge: 14
Beitrag drecksack Mitglied 14:50:04 02.02.2012   Titel:              Zitieren

Zeile 25 in der h-Datei und Zeile 67 in der cpp-Datei passen nicht zusammen.
Der erste Parameter beim Signal ist ein Zeiger aber du übergibst keinen Zeiger bei emit sendCursorData(begin_end, image).
Namenloser342
Unregistrierter




Beitrag Namenloser342 Unregistrierter 15:17:27 02.02.2012   Titel:              Zitieren

Jojo, und wie gesagt ist das nicht die tatsächliche Datei sondern so ungefähr wie sie aussah.
"Diese Vermutung hat mit der Variable überhaupt nichts zu tun. So ein Verhalten tritt auf, wenn Du irgendwo anders Murks gemacht hast. Nicht mit "der Variable Murks gemacht", sondern "Murks gemacht". Wenn Du Dir den Heap zerschießt, ist dem System herzlich egal welche Variable dort mal lag oder liegen sollte."

Wie soll das konkret mit der Deklaration von std::pair als pointer bzw. als nicht pointer erklärt werden. Interessiert mich.
arghonaut
Unregistrierter




Beitrag arghonaut Unregistrierter 15:47:43 02.02.2012   Titel:              Zitieren

Bitte mach doch auch mal selber was. Entweder google->Heap zerschossen, oder wirklich mal per Debugger reingehen.
MFK
Mitglied

Benutzerprofil
Anmeldungsdatum: 02.11.2002
Beiträge: 5267
Beitrag MFK Mitglied 16:04:53 02.02.2012   Titel:              Zitieren

Namenloser342 schrieb:
Wie soll das konkret mit der Deklaration von std::pair als pointer bzw. als nicht pointer erklärt werden. Interessiert mich.

Du änderst damit die Größe des Members, und damit das Speicherlayout der enthaltenden Klasse. Damit kann es sein, dass du dir in der einen Variante eine wichtige Stelle im Speicher zerschießt (Absturz), und mit der anderen eine nicht so wichtige (kein Fehler, oder falsche Werte, die du bisher nicht entdeckt hast, oder es knallt irgendwann später).

Allgemein ist es nicht sinnvoll, sich zu fragen, warum sich Code so oder so verhält, wenn undefiniertes Verhalten im Spiel ist. Es kann alles mögliche passieren. Es kann auch sein, dass derselbe Code mal läuft und mal nicht.

_________________
"Funktioniert nicht" ist keine ausreichende Fehlerbeschreibung.
Namenloser324
Unregistrierter




Beitrag Namenloser324 Unregistrierter 17:32:59 02.02.2012   Titel:              Zitieren

arghonaut schrieb:
Bitte mach doch auch mal selber was. Entweder google->Heap zerschossen, oder wirklich mal per Debugger reingehen.


liest du überhaupt was ich hier schreibe?
arghonaut
Unregistrierter




Beitrag arghonaut Unregistrierter 19:12:19 02.02.2012   Titel:              Zitieren

Namenloser324 schrieb:
liest du überhaupt was ich hier schreibe?

Sicher, aber du ignorierst seit meinem ersten Post, was ich (und andere) schreibe.
* Es liegt NICHT daran, was du in dieser Klasse machst
* Es liegt NICHT an std::pair oder std::pair*
* Es ist undefiniertes Verhalten
* Du sollst einen Debugger verwenden.
* Wenn du nicht selber zurande kommst, sollst du ein komplettes, kompilierbares Programm liefern, das deinen Fehler aufweist.

Da du irgendwie undefiniertes Verhalten produzierst kann man auch nicht erklären, warum es mit dem Pointer klappt aber nicht ohne. Der Fehler liegt einfach an einer ganz anderen Stelle (was hier jetzt auch schon genügend oft erklärt wurde).
Wenn du dich weiter so dagegen sträubst, wird man dir auch nicht helfen können - sorry.
kingcools
Mitglied

Benutzerprofil
Anmeldungsdatum: 14.03.2008
Beiträge: 78
Beitrag kingcools Mitglied 01:14:38 05.02.2012   Titel:              Zitieren

Hallo, da dieser Fehler jetzt später bei einem gleichen Fall auftritt, poste ich hier mal den code als zip datei + verwendeter bilder und dann könnt ihr mir vielleicht helfen, denn das debuggen bringt nichts, da das programm funktioniert, sobald ich den debugger verwende.
Es geht um die Variable "QBitmap imagemask;", zu finden in Groundeditor.h im privaten Klassenbereich. Als Pointer funktioniert der Code.

hier das projekt:
http://www.mediafire.com/?bbz66y77wmyoayd

der code muss an zwei stellen geändert werden:
ihr müsst die Bildadresse zu den neuen Adressen auf euren Festplatten ändern:

In Groundeditor.cpp im ersten Konstruktor muss die Adresse der Terraindatei geändert werden.
In mywidget.cpp weit oben, muss das define geändert werden zur adresse der test.png auf eurer festplatte.
Dann sollte es starten.

Wie gesagt, wenn ich den Debugger laufen lasse, funktioniert (wenn auch schleppend) das Programm ohne Absturz. Wenn ich es normal ausführe stürzt es sofort ab.
C/C++ Forum :: Andere GUIs - Qt, GTK+, wxWidgets ::  Qt: Klasse als Member und nicht als Pointer deklariert -> crash  
Gehen Sie zu Seite Zurück  1, 2, 3  Weiter
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.