021
10.08.2003, 00:49 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft... (Operator)
|
sieht ganz gut aus ein paar anmerkungen haben noch nimm keine alten header machs so
C++: |
#include <iostream> using namespace std;
|
dein fehlerchen war hier
C++: |
my_2d_array[y] = new int [x]; //falsch my_2d_array[i] = new int [x]; //hier muss ein i hin sonst allokiert der jedesmal für das 2d_array an der stelle y neuen speicher
|
zum schluss gibst du nicht richtig frei bevor du den "hauptpointer freigeben darft erst die unterarrays also so:
C++: |
for(i=0;i<y;i++) delete [] my_2d_array[i]; delete[] my_2d_array;
|
für jemanden der glaubt das gar nciht verstanden zu habe war das doch schon ganz ordentlich
so hier noch mal das proggie komplett
C++: |
#include <iostream> using namespace std;
int main(){ int **my_2d_array,x,y,i,j;
cout<<"Bitte y dimension eingeben:"; cin>>y; cout<<"Bitte x dimension eingeben:"; cin>>x;
my_2d_array = new int*[y];
for(i=0;i<y;i++){ my_2d_array[i] = new int [x]; for(j=0;j<x;j++){ my_2d_array[i][j]= rand(); cout<<my_2d_array[i][j]<<"\t"; } cout<<endl; }
for(i=0;i<y;i++) delete [] my_2d_array[i]; delete[] my_2d_array; getchar(); }
|
Ich persönlich benutze aus dem grund das ich ständig die schleife(n) zum freigeben des speichers bei mehrdimensionalen arrays mitschleppen muss nur eindimensionale arrays. Handycap hierbei ist das man "kompliziertere" Indexrechnungen machen muss
das geht dann so:
C++: |
#include <iostream> using namespace std;
int main(){ int *my_2d_array,x,y,i,j;
cout<<"Bitte y dimension eingeben:"; cin>>y; cout<<"Bitte x dimension eingeben:"; cin>>x;
my_2d_array = new int[x*y];
for(i=0;i<y;i++){ for(j=0;j<x;j++){ my_2d_array[i*x+j]= rand(); cout<<my_2d_array[i*x+j]<<"\t"; } cout<<endl; } delete[] my_2d_array; getchar(); }
|
ist aber sicherlich ne geschmackfrage aber man kann auch locker komplett ohne mehrdimensionale arrays auskommen indem man das kommplett auf ein eindimensionales array abbildet. (Im speicher legt es der rechner eigentlich auch nicht anders ab, mal davon abgesehen das das nicht hintereinander im speicher liegen musst wenn du nicht alles auf einmal allokierst)
Gruss Heiko -- ...fleißig wie zwei Weißbrote Dieser Post wurde am 10.08.2003 um 00:52 Uhr von Heiko editiert. |