c - malloc nulling other variables -
i using following function
int parse_headers(char *str, struct net_header *header) { char *pch; struct net_header *h, *temp; pch = strtok(str, "\n"); header->name = pch; h = malloc(sizeof(struct net_header)); header->next = h; while ((pch = strtok(null, "\n")) != null) { h->name = pch; temp = malloc(sizeof(struct net_header)); h->next = temp; h = temp; } return n_success; } up until line header->next = h, works planned. however, after line h = malloc(sizeof(struct net_header));, variables pch , str reason turn null (i set breakpoints find this). after line temp = malloc(sizeof(struct net_header));, header turns null. clearly, have kind of memory management issue, can't seem find is. header argument initialized before call function
header = malloc(sizeof(struct net_header)); struct net_header declared as
struct net_header { char *name; char *content; struct net_header *next; }; i ran xcode's static analyzer, found no issues. have no compiler warnings or errors. running program on mac os x 10.9.
why variables being nullified after call malloc()?
if need keep strtok result have dup it, example strdup
int parse_headers(char *str, struct net_header *header) { char *pch; struct net_header *h, *temp; pch = strtok(str, "\n"); header->name = strdup(pch); h = malloc(sizeof(struct net_header)); header->next = h; while ((pch = strtok(null, "\n")) != null) { h->name = strdup(pch); temp = malloc(sizeof(struct net_header)); h->next = temp; h = temp; } return n_success; } you need call free somewhere free memory
Comments
Post a Comment