Gå til innhold

[Løst]Malloc gir ikke ny adresse i minnet!


Anbefalte innlegg

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
Videoannonse
Annonse

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

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. :D

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...