Gå til innhold

Hva er galt med denne c-koden?


Anbefalte innlegg

Hvorfor får jeg feilmeldingen "test.c(8): warning #2173: Pointer to local 'foo' is an illegal return value."?

 

Jeg forsøker å lage en funksjon (bar()) som skal returnere en peker til en nyopprettet struct.

 

typedef struct {
int n;
} foobar;

foobar* bar(int n) {
foobar foo;
foo.n = n;
return &foo;
}

int main(int argc, char* argv) {
foobar* foo = bar(3);
return 0;
}

Lenke til kommentar
Videoannonse
Annonse

 

Dette vil også "virke"

foobar* bar(int n) {
static foobar foo;
foo.n = n;
return &foo;
}

 

Men da er det den samme foo du refererer til hele tiden. Er litt usikker på hva du egentlig vil gjøre. Bruker du malloc må gjøre free hvis ikke vil programmet ditt bruke opp minne over tid (minnelekkasje).

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å
×
×
  • Opprett ny...