>void *b=malloc(l*2);

なにゆえ l*2 ?