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 :: C++ (auch C++0x und C++11) ::  Klasse - Absturz bei Zugriff auf Private Varialben     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
Natasia
Unregistrierter




Beitrag Natasia Unregistrierter 20:53:38 29.01.2012   Titel:   Klasse - Absturz bei Zugriff auf Private Varialben            Zitieren

Hey,
ich habe seit ner Weile nicht mehr programmiert, ich scheine irgend ne Kleinigkeit zu übersehen...

Aktuell schreibe ich an einer kleinen Klasse. Leider stürzt das Programm sporadisch einfach aus mir unerklärlichen Gründen ab.

Das passiert immer wenn ich auf die Membervariablen der Klasse zugreife. So als ob der Speicher nicht richtig "reserviert" wäre.

Hier ein kleines Beispiel, wenn ich auf die Variable array zugreife stützt es ab. Nicht immer aber manchmal. Also typisch für Speicherzugriffsfehler:


C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// main.cpp
#include
<cstdlib>
#include
<iostream>

#include
"test.h"

using namespace std;

int main(int argc, char *argv[])
{
    test obj;
    obj.function();
   
    system("PAUSE");
    return EXIT_SUCCESS;
}


// test.h
class test{
   
    public:
        int function();
       
    private:
        int array[2048];  
    };


//test.cpp
#include
"test.h"

int test::function(){
    for (int i=0; i<2048;i++)
        array[i]=0;
    };
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// main.cpp
#include
<cstdlib>
#include
<iostream>

#include
"test.h"

using namespace std;

int main(int argc, char *argv[])
{
test obj;
obj.function();

system("PAUSE");
return EXIT_SUCCESS;
}


// test.h
class test{

public:
int function();

private:
int array[2048];
};


//test.cpp
#include
"test.h"

int test::function(){
for (int i=0; i<2048;i++)
array[i]=0;
};
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// main.cpp
#include
<cstdlib>
#include
<iostream>

#include
"test.h"

using namespace std;

int main(int argc, char *argv[])
{
    test obj;
    obj.function();
   
    system("PAUSE");
    return EXIT_SUCCESS;
}


// test.h
class test{
   
    public:
        int function();
       
    private:
        int array[2048];  
    };


//test.cpp
#include
"test.h"

int test::function(){
    for (int i=0; i<2048;i++)
        array[i]=0;
    };


Habe ich irgendwas übersehen??

lg
Jenny
Mechanics
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.01.2012
Beiträge: 432
Beitrag Mechanics Mitglied 22:13:29 29.01.2012   Titel:              Zitieren

Das macht keinen Sinn... Ich seh hier keinen Fehler. Das muss mit was völlig anderem zusammenhängen.
noergel reload
Unregistrierter




Beitrag noergel reload Unregistrierter 23:42:03 29.01.2012   Titel:              Zitieren

Das sieht ziemlich sinnbefreit aus.
icarus2
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.09.2009
Beiträge: 1163
Beitrag icarus2 Mitglied 00:05:40 30.01.2012   Titel:              Zitieren

Das duerfte nicht einmal kompilieren...
Michael E.
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.10.2003
Beiträge: 5323
Beitrag Michael E. Mitglied 13:44:17 30.01.2012   Titel:              Zitieren

icarus2 schrieb:
Das duerfte nicht einmal kompilieren...

Warum?

_________________
Your password must be at least 18770 characters and cannot repeat any of your previous 30689 passwords. Please type a different password. Type a password that meets these requirements in both text boxes. (http://support.microsoft.com/kb/276304/en-us/)
icarus2
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.09.2009
Beiträge: 1163
Beitrag icarus2 Mitglied 13:51:10 30.01.2012   Titel:              Zitieren

Michael E. schrieb:
icarus2 schrieb:
Das duerfte nicht einmal kompilieren...

Warum?

In Zeile 33-36 fehlt der Rueckgabetyp.
natasia
Unregistrierter




Beitrag natasia Unregistrierter 14:13:01 30.01.2012   Titel:              Zitieren

jap, ich seh auch keinen Fehler (return 0) fehlt natürlich, aber dev-cpp kompiliert das auch so.

Und das Prog hat auch keinen Sinn, es ist nur nen bsp, um zu testen ob es wirklich daran liegt (was ich mir wirklich nicht vorstellen konnte). Und dort tritt das gleiche "problem" auf, es stürtzt einfach an irgend einer x-beliebigen stelle ab, wenn es dabei ist dem array nen wert zuzuweisen, allerdings nicht immer... also so als würde man einfach auf ein element außerhalb des arrays zugreifen.

Ich habe den array so lang gewählt, weil dann die wahrscheinlichkeit höher wird das es abstürzt....

lg
icarus2
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.09.2009
Beiträge: 1163
Beitrag icarus2 Mitglied 14:17:13 30.01.2012   Titel:              Zitieren

Hast du den Code schon mal mit einem Debugger ausgefuehrt? In der Regel sollte man dann genau sehen, wo das Programm abgestuerzt ist ueber den Call Stack (oder wie der auch immer heisst).

Poste doch mal deinen richtigen Code (wenn nicht allzu lang) und nicht nur das Beispiel. Der Fehler muss irgendwo sonst sein.
natasia
Unregistrierter




Beitrag natasia Unregistrierter 23:33:31 30.01.2012   Titel:              Zitieren

nein im Debuger habe ichs noch nicht ausgeführt, weiß auch nicht wie ich das mache.

Und mein Progamm ist länger, aber die Hauptaufgabe ist sachen aus ner Datei einzulesen, die in dem Array gespeichert werden. Es ist ja egal was ich da rein schreibe, beim Schreibvorgang stürtzts ab.

ich habe die for schleife folgender Maßen ergänzt:

C/C++ Code:
int test::function(){
    for (int i=0; i<2048;i++){
        cout << i <<" ";
        array[i]=0;
        system("pause");
        }
    };
C/C++ Code:
int test::function(){
for (int i=0; i<2048;i++){
cout << i <<" ";
array[i]=0;
system("pause");
}
};
C/C++ Code:
int test::function(){
    for (int i=0; i<2048;i++){
        cout << i <<" ";
        array[i]=0;
        system("pause");
        }
    };


es stürtzt bei mir bin index 1072 ab... keine ahnung was das soll... macht gar keinen Sinn!
Mechanics
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.01.2012
Beiträge: 432
Beitrag Mechanics Mitglied 23:52:27 30.01.2012   Titel:              Zitieren

Du hast wohl eher ein Problem beim Lesen aus der Datei, kann das sein? Und du solltest schleunigst lernen, einen Debugger zu verwenden, das ist 1000 mal wichtiger, als dieses konkrete Problem zu lösen.
icarus2
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.09.2009
Beiträge: 1163
Beitrag icarus2 Mitglied 12:19:25 31.01.2012   Titel:              Zitieren

Dann Google mal nach Debugger, da wirst du sicher fuendig. Viele IDEs, z.B. MS Visual Studio, haben das integriert. Das musst du unbedingt lernen.
C++ Forumbot
Forumbot

Benutzerprofil
Anmeldungsdatum: 29.02.2004
Beiträge: 16160
Beitrag C++ Forumbot Forumbot 16:30:56 31.01.2012   Titel:              Zitieren

Dieser Thread wurde von Moderator/in SideWinder aus dem Forum DOS und Win32-Konsole in das Forum C++ (auch C++0x, bzw. C++11) verschoben.

Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?


Dieses Posting wurde automatisch erzeugt.

_________________
Besuchen Sie unsere Bücherecke.
http://www.c-plusplus.de/bucher.php
Mit jeder Bestellung unterstützen Sie das Forum.
C/C++ Forum :: C++ (auch C++0x und C++11) ::  Klasse - Absturz bei Zugriff auf Private Varialben   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.