c - Array inside struct filled with garbage after initialization -
c - Array inside struct filled with garbage after initialization -
i defined info construction (foo) contains array of 25 pointers (members) itself. want initialize each of pointers null, init function isn't working correctly. when foo f returns foo_init(), of members null, others populated random values.
//in foo.h #include <stdio.h> #include <stdlib.h> typedef struct foo { struct foo * members[25] ; } foo ; void foo_init(foo * f) ; //in foo.c void foo_init(foo * f) { f = (foo*)malloc(sizeof(foo)); (size_t = 0 ; < 25 ; i++) { f->members[i] = null ; } /* ok here, members null */ } //in main.c #include "foo.h" int main(int argc, const char * argv[]) { foo f ; foo_init(&f) ; /* why isn't every index of f.members null? */ /* ... */ homecoming 0; } i ran code through lldb. within foo_init(), members null. after returning foo_init(), f.members total of random garbage values.
the address of foo in main overwritten phone call malloc. remove line , initialization should work.
if want foo_init allocate memory can convert :
void foo_init(foo **out_f) { foo *f = malloc(sizeof *f); (size_t = 0 ; < 25 ; i++) { f->members[i] = null; } *out_f = f; } or return pointer idiomatic in c :
foo *foo_init(void); c arrays pointers initialization
Comments
Post a Comment