add: memset( new_node, 0, sizeof(struct ip_node));
context: struct ip_node *split_node(struct ip_node* dad, unsigned char byte){	struct ip_node *new_node;	struct ip_node *foo;	/* creat a new node */	new_node = (struct ip_node*)ip_malloc(sizeof(struct ip_node));	if (!new_node)		return 0;	new_node->byte = byte;	new_node->leaf_hits = 0;	new_node->hits = (dad->hits)/2;	new_node->children = 0;	new_node->next = 0;	/* link it */	foo = dad->children;	while(foo && foo->next)		foo = foo->next;	if (foo) {		foo->next = new_node;		new_node->prev = foo;	} else {		dad->children = new_node;		new_node->prev = dad;	}	/* update dad */	dad->hits /= 2;	return new_node;}