| Autor |
Nachricht |
Natasia
Unregistrierter
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
C++ Forumbot Forumbot
16:30:56 31.01.2012 Titel: |
|
Zitieren |
|
 |