2d int array mit malloc
-
ok es lässt sich jetz compilieren
jetz bekomme ich aber einen speicherzugriffsfehler beim ausführen wenn ich
visited[i][j] = 0;
mache....aber wie im ersten beispiel zu erkenne wird ja nicht mehr als der bereich der gemalloct wird mit 0 belegt?!
-
kale1990 schrieb:
int *visited; visited = (int *) malloc(n*sizeof(int)); for(i=0;i<n;i++) { visited[i] = (int *) malloc(n*sizeof(int)); // <-- hier tritt der warning auf } for(i=0;i<n;i++) { for(j=0;j<n;j++) { visited[i][j] = 0; // <-- hier tritt der error auf } }
versuch es so
int [u]*[/u]*visited; visited = malloc(n*sizeof(int[u]*[/u])); for(i=0;i<n;i++) { visited[i] = malloc(n*sizeof(int));
-
Da fehlen aber noch die Casts (bei malloc)
.
-
CodeFinder schrieb:
Da fehlen aber noch die Casts (bei malloc)
.
unsinn, malloc gibt einen 'void*' zurück, das ist ja das gute, da muss man nix casten...
-
Undertaker schrieb:
CodeFinder schrieb:
Da fehlen aber noch die Casts (bei malloc)
.
unsinn, malloc gibt einen 'void*' zurück, das ist ja das gute, da muss man nix casten...
//gelöscht
//Edit ok... war wohl doch ernst gemeint...
-
Undertaker schrieb:
unsinn, malloc gibt einen 'void*' zurück, das ist ja das gute, da muss man nix casten...
Hm, muss das in C nicht explizit gecastet werden
?!
q.e.d.:
error C2440: '=': 'void *' kann nicht in 'int *' konvertiert werden
Konvertierung von 'void' in Zeiger auf nicht-'void' erfordert eine explizite Typumwandlung
error C2440: '=': 'void *' kann nicht in 'int ' konvertiert werden
Konvertierung von 'void' in Zeiger auf nicht-'void' erfordert eine explizite Typumwandlung
-
CodeFinder schrieb:
Hm, muss das in C nicht explizit gecastet werden
?!
error C2440: '=': 'void *' kann nicht in 'int *' konvertiert werden
Konvertierung von 'void' in Zeiger auf nicht-'void' erfordert eine explizite Typumwandlungerrors? du solltest deinen compiler wechseln. welchen hast du, der so spinnt?
-
CodeFinder schrieb:
Undertaker schrieb:
unsinn, malloc gibt einen 'void*' zurück, das ist ja das gute, da muss man nix casten...
Hm, muss das in C nicht explizit gecastet werden
?!
q.e.d.:
error C2440: '=': 'void *' kann nicht in 'int *' konvertiert werden
Konvertierung von 'void' in Zeiger auf nicht-'void' erfordert eine explizite Typumwandlung
error C2440: '=': 'void *' kann nicht in 'int ' konvertiert werden
Konvertierung von 'void' in Zeiger auf nicht-'void' erfordert eine explizite TypumwandlungBenutz mal einen C-Compiler für C und keinen C++-Compiler.
Schön blamiert...
-
Tim schrieb:
Benutz mal einen C-Compiler für C und keinen C++-Compiler.
ich könnte ja jetzt.... nein!, ich versprach nicht mehr über ^^ zu lästern
-
Tim schrieb:
Benutz mal einen C-Compiler für C und keinen C++-Compiler.
Schön blamiert...
Nop, da hast Du etwas nicht verstanden, das war eine Frage! Ich programmiere in C++, da wird auf Typen Wert gelegt und es ist (wie man ja sieht) ein Cast notwenig, für C war ich mir nicht sicher!
-
Undertaker schrieb:
Tim schrieb:
Benutz mal einen C-Compiler für C und keinen C++-Compiler.
ich könnte ja jetzt.... nein!, ich versprach nicht mehr über ^^ zu lästern
Tu was Du nicht lassen kannst - mir ist das egal
.
-
CodeFinder schrieb:
Tim schrieb:
Benutz mal einen C-Compiler für C und keinen C++-Compiler.
Schön blamiert...
Nop, da hast Du etwas nicht verstanden, das war eine Frage! Ich programmiere in C++, da wird auf Typen Wert gelegt und es ist (wie man ja sieht) ein Cast notwenig, für C war ich mir nicht sicher!
Dafür war mir in deinen Beiträgen in diesem Thread zuviel "
", "q.e.d." und zuwenig "C++".
-
CodeFinder schrieb:
Tu was Du nicht lassen kannst - mir ist das egal
.
ich meinte nicht, dass ich über dich lästern wollte, falls du es falsch verstanden hast...
-
Naja, Leute ist auch Rille
. Glaub es ist (auch dem Threadersteller) klar, was gemeint ist, also Problem gelößt
.