Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
magynhard Super JLI'ler
Anmeldedatum: 26.04.2003 Beiträge: 461 Wohnort: Wild durch die Welt ;-) Medaillen: Keine
|
Verfasst am: 17.08.2005, 21:53 Titel: Dynamisches Feld mit Lücken? |
|
|
Ist folgendes eigentl. problemlos einsetzbar?:
CPP: | int * zahl[];
zahl[0] = new int;
zahl[999] = new int;
zahl[0] = 4;
zahl[999] = 1233;
|
Solange ich nur auf die Elemente zugreife, die per "new" gefüllt wurden, gibt es doch keine Probleme, oder habe ich etwas missachtet?
Ist das gar üblich?
Funktionieren tut's bisher in kleinem Maße auf jeden Fall.
Damit lassen sich Daten nämlich auf elegante Weise verwalten, finde ich.
Wollte euch, die Erfahrenen, zur Sicherheit um Rat bzw. Bestätigung bitten, damit ich in dieser Richtung sorglos was (größeres) basteln kann und nicht am Ende ... _________________ Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
|
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 17.08.2005, 22:03 Titel: |
|
|
Das Verhalten ist undefiniert, da du an zahl[999] einen Wert (Speicheradresse) zuweißt. Der Speicherbereich zahl[999] ist aber undefiniert.
Du schreibst eine Adresse, die reservierten (gültigen) Speicher enthält an eine undefinierte Adresse.
C. |
|
Nach oben |
|
|
magynhard Super JLI'ler
Anmeldedatum: 26.04.2003 Beiträge: 461 Wohnort: Wild durch die Welt ;-) Medaillen: Keine
|
Verfasst am: 17.08.2005, 23:19 Titel: |
|
|
Das heißt so wie oben dargestellt, läuft es nur auf gut Glück gut?
Danke für den Hinweis, dann werde ich mir was anderes überlegen. _________________ Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
|
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 18.08.2005, 09:22 Titel: |
|
|
Es wird wahrscheinlich gar nicht laufen. (Abstürzen)
Ich würde vorschlagen, eine STL-Map zu verwenden, und dort die Key-Value-Werte zu speichern. _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
OLiver Super JLI'ler
Alter: 33 Anmeldedatum: 29.06.2003 Beiträge: 306 Wohnort: Jena Medaillen: Keine
|
Verfasst am: 18.08.2005, 10:33 Titel: |
|
|
So höchstens:
CPP: | int * zahl[1000];
zahl[0] = new int;
zahl[999] = new int;
*zahl[0] = 4;
*zahl[999] = 1233;
delete zahl[0];
delete zahl[999];
|
_________________ http://www.sieder25.org/ (Siedler 2 - Remake) |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 18.08.2005, 17:23 Titel: |
|
|
OLiver hat Folgendes geschrieben: | So höchstens:
|
lol? |
|
Nach oben |
|
|
OLiver Super JLI'ler
Alter: 33 Anmeldedatum: 29.06.2003 Beiträge: 306 Wohnort: Jena Medaillen: Keine
|
Verfasst am: 18.08.2005, 17:56 Titel: |
|
|
DirectXer hat Folgendes geschrieben: | OLiver hat Folgendes geschrieben: | So höchstens:
|
lol? |
_________________ http://www.sieder25.org/ (Siedler 2 - Remake) |
|
Nach oben |
|
|
abc_d JLI Master Trainee
Alter: 34 Anmeldedatum: 27.01.2003 Beiträge: 615
Medaillen: Keine
|
Verfasst am: 18.08.2005, 18:04 Titel: |
|
|
Wie sonst? [] klappt auf jedenfall nicht. -> listen, oder sonstwas -> stl _________________ http://mitglied.lycos.de/sarti/linuxisevil.gif Linux is evil - get the fact.
Never touch a running System - der Systemling |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 18.08.2005, 18:37 Titel: |
|
|
wieso hab ich da "lol?" geschrieben? Ich könnte schwören, dass ich da was falsches gesehen hab... Dabei ists doch nur ein Array aus 1000 int-Zeigern...
Irgendwie bin ich heut en bisschen verwirrt. Naja, sry für spam
Gruß DirectXer, der sich ernst fragt, ob er ne Brille braucht |
|
Nach oben |
|
|
magynhard Super JLI'ler
Anmeldedatum: 26.04.2003 Beiträge: 461 Wohnort: Wild durch die Welt ;-) Medaillen: Keine
|
Verfasst am: 18.08.2005, 22:10 Titel: |
|
|
Ich werde vorerst mal ein "größeres" Zeigerfeld anlegen.
1000 Stück belegen ja sowieso nur ~4KB.
Die STL werd' ich mir wohl dann vielleicht doch irgendwann mal anschauen müssen. _________________ Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
|
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 19.08.2005, 07:52 Titel: |
|
|
1000 Zeiger einfach mal so anzulegen ist eine zimlich dumme Idee - auch wenn es "nur" 4KB sind. Ich will jetzt nicht gross auf die Nachteile älterer Systeme verweisen, aber 4KB ist schon eine ganze Menge Speicher, der so verloren geht. Die STL ist zwar nicht für Ihr Platzsparendes Konzept bekannt, aber so ist esimmer noch besser als "drauf los" irgendwas zu reservieren, mit der Annahme, es wird schon keinen Überlauf geben... _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
|