Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
25.03.2002, 15:06
anothergb02



Also das Problem hat sich zwar für mich schon "gelöst", wollte aber trozdem nochmal sehen, ob es einen einfacheren Weg gibt, die *chars zu verwalten ...
Sicher haben viele von euch schon dieses Arschproblem mitbekommen, dass der irgend welche Fehler mit (new, malloc) delete; free beim char hat (in C++). So entweder man macht nu ne Stringklasse benutzt CString wandelt das in Zahlen um oder läd sich eine Stringklass .... runter, aber es könnte ja aber auch genau so gut sein, dass man irgend was beachten muss und das alles unnötig ist. Also ??????

Der Müll beschäftig mich jetzt schon seit "Jahren", zwar findet man immer irgend eine Lösung, die ist aber meinstens nen Kompromiss, der einen immer unzufriend stimmt :(

--

Being in john Malkovich
.....

zum Seitenanfang zum Seitenende Profil || Suche
001
25.03.2002, 15:11
KillerDoc



Was für fehler hast du denn mit new/delete bzw malloc/free ?

--

lazy sunday afternooon
i got no mind to worry
i close my eyes and drift away....

zum Seitenanfang zum Seitenende Profil || Suche
002
25.03.2002, 17:10
anothergb02



Wenn man zB. char *xray = new char[var]; und dann delete xray .... machst, dann kann es passieren, dass er einen Ausnahmefehler kriegt aber nur bei der Verwendung von chars .... falls du diesen Fehler noch nie hattenst, dann hattest du bis jetzt wahrscheinlich Glück und das dies kein Pc abhängiger ... Fehler trifft nicht zu, da aufm Pc von a1 manchmal genau das gleich passiert :&

--

Being in john Malkovich
.....

zum Seitenanfang zum Seitenende Profil || Suche
003
25.03.2002, 17:18
mani



hm ja sowas hab ich auch manchmal, scheint wohl zufallsgesteurt zu sein :P

--

zum Seitenanfang zum Seitenende Profil || Suche
004
25.03.2002, 20:34
KillerDoc



Hmm vielleicht hab ich bis jetzt wirklich nur glück gehabt :)

Aber kanns ned sein das du irgendwie über den reservierten speicher hinausschreibst wenn das auftritt??

--

lazy sunday afternooon
i got no mind to worry
i close my eyes and drift away....

zum Seitenanfang zum Seitenende Profil || Suche
005
25.03.2002, 21:41
dp
Administrator


kompilier ma unter linux
wenn da seht

Speicherzugriffsfehler.

dann liegts an dir ...

--

zum Seitenanfang zum Seitenende Profil || Suche
006
25.03.2002, 23:58
Kriz



Probier mal delete [] xray;

Weil du ein Array erschaffts und kein einzelnes Objekt. Delete bezieht sich auf einzelne Objekte auf dem Heap, delete [] auf ein Heaparray...

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
007
27.03.2002, 12:43
anothergb02



Kriz tut mir leid, dass hat aber nix damit zu tuen :P
trozdm danke an euch alle.

--

Being in john Malkovich
.....

zum Seitenanfang zum Seitenende Profil || Suche
008
27.03.2002, 15:41
Kriz



Wenn du meinst o_O. Ich hab ja von C++ keine Ahnung...

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
009
27.03.2002, 16:07
mani



lol

--

zum Seitenanfang zum Seitenende Profil || Suche
010
29.03.2002, 13:21
apfelkorn



1. Das Topic hat aber einen Wunderschönen Namen
2. !!!???!!!SSSAAARRRKKKAAASSSMMMUUUSSS!!!???!!!

--

zum Seitenanfang zum Seitenende Profil || Suche
011
30.03.2002, 00:02
Leviathan



warum machst du denn einen string so:

char *xray = new char[var];

ich habe das so gelernt:

char xray[var]="";

kann zwar sein, dass das das selbe ist, ich bin mir aber nicht sicher.

wichtig: ein element im string muss für das '\0'-zeichen reserviert bleiben, das heisst, dass du in einen string von VAR elementen einen VAR-1 zeichen langen string schreiben kannst. z.B.:

char str[31]="dieser text ist 32 zeichen lang";

geht nicht (gibt bei einer konsolenanwendung einen zugriffsfehler und bei einer win-anwendung dieses fenster, wo man auf details gehen kann)

ausserdem gibt es noch die string-klasse aus der stl (im namespace std) und die CString-klasse aus der mfc (nur microsoft-kompiler)

--

Entities: HL | HL²
Kompilierfehler
r_speeds | mehr über r_speeds

zum Seitenanfang zum Seitenende Profil || Suche
012
30.03.2002, 09:38
mani



hm ? nur m$ compiler ? das is quatsch, borlands c++ glönkes hat auch mfc libs/header drin

bei char xray[var]=""; hast du halt ne feste größe >:o

--

zum Seitenanfang zum Seitenende Profil || Suche
013
30.03.2002, 14:25
Leviathan



was der borland-kompiler kann oder nicht kann weiss ich nicht, hab noch nie einen bedient, wenn der mfc kann, kennt der auch die klasse CString, sonst halt nicht.
ich wollte damit eigentlich nur sagen, dass die klasse nicht zum iso-standart gehört, sondern dazugefummelt ist (über die mfc halt)

und bei dem string als char-array hat mich die verwendung des new-operators verwundert, ich würde den da nie verwenden (ich hab mit c angefangen, nicht mir c++), so würde ich das höchstens in java machen.

aber wenn man ihn verwendet, muss man den speicher nicht auch wieder mit delete freigeben? vielleicht liegt es daran.

--

Entities: HL | HL²
Kompilierfehler
r_speeds | mehr über r_speeds

zum Seitenanfang zum Seitenende Profil || Suche
014
02.04.2002, 00:39
Archangel



char xray[var]="";
wenn das geht, dann ...
die anzahl der elemente bei der deklaration eines arrays muss konstant sein, von daher würde nicht funktioniern:

int i;
i = rand();
char buf[i];

da muss man zu malloc/new greifen..

int i;
char *p;
i = rand();
p = (char *)malloc(i);

oder
int i;
char *p;
i = rand();
p = new char[i];

ich persöhnlich ziehe malloc/free vor

--

Mar 01 01:10:13 <voice> jo
Mar 01 01:10:40 <voice> bis dann ^^
Mar 01 01:11:20 <Archangel> jo
**** ENDING LOGGING AT Tue Mar 1 01:58:13 2005

zum Seitenanfang zum Seitenende Profil || Suche
015
02.04.2002, 10:28
Tron



das board hat einige von Archangels klammern gefressen (leute, immer dran denken: [ i ] mag das board net)

Zitat:
Archangel postete
char xray[var]="";
wenn das geht, dann ...
die anzahl der elemente bei der deklaration eines arrays muss konstant sein, von daher würde nicht funktioniern:

int i;
i = rand();
char buf[ i ];

da muss man zu malloc/new greifen..

int i;
char *p;
i = rand();
p = (char *)malloc(i);

oder
int i;
char *p;
i = rand();
p = new char[ i ];

ich persöhnlich ziehe malloc/free vor

<edit>
ich hatte das problem noch nie.
char* x = new char[IRGEND_EINE_ZAHL];
if (x) delete [] x;
funzt bei mir bisher immer, auch in meiner home-brew string-klasse.
</edit>

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett


Dieser Beitrag wurde am 02.04.2002 um 11:01 von Tron bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche