- mOtz^ - Skrevet 15. september 2009 Del Skrevet 15. september 2009 Er veldig fersk på dette, men jeg trodde at ved deklarasjon med malloc, fikk man en ny adresse i minnet! char s; while (1) { Node *n = (Node *) malloc(sizeof(Node)); char *midS = (char *) malloc(strlen(s) + 1); printf("Node: %u - char: %u\n",&n,&midS); } Når jeg skriver ut dette, er adressen til n og midS like (hver for seg), for alle ganger prog løper igjennom løkka. Hvordan får hver variabel en ny adresse? Lenke til kommentar
[kami] Skrevet 15. september 2009 Del Skrevet 15. september 2009 joda, du skriver ut adressen til variabelen, ikke objektet. variabelen din vil ha samme adresse da den går inn og ut av scope i løkka. Slik skriver du ut adressen til objektet ditt: #include <stdio.h> #include <stdlib.h> struct Node { char dummy; }; int main () { for (int a = 0; a < 10; a++) { Node *n = (Node *) malloc(sizeof(Node)); printf("Node: %u\n",n); } return 1; } Lenke til kommentar
GeirGrusom Skrevet 15. september 2009 Del Skrevet 15. september 2009 Som [kami] sier, så er nok adressene litt forskjellige, med sånn ca. 4 eller 8 byte ^^ Lenke til kommentar
- mOtz^ - Skrevet 15. september 2009 Forfatter Del Skrevet 15. september 2009 Takk for svar, ting funka nå! Lenke til kommentar
LostOblivion Skrevet 16. september 2009 Del Skrevet 16. september 2009 Det du prøver på er å skive ut adressen til pekeren, m.a.o. pekeren til hvor pekeren er i minnet. Det du vil skrive ut et selve pekeren. For å forvirre deg enda mer, poster jeg koden under: char *ptr = (char *)malloc(64); char **ptr2ptr = &ptr; char ***ptr2ptr2ptr = &ptr2ptr; char ****ptr2ptr2ptr2ptr = &ptr2ptr2ptr; Den siste der har jeg opplevd kun en gang heldigvis. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå