On Wednesday 24 February 2010 14:44:35 Andrey Zonov wrote: > Hi, > > When I try allocated pointer to a pointer, and in it some pointers > (important: size is 2 bytes), the pointers lose their boundaries. > Why it can happen? > > Test program in attach.
Your test program is broken: >#define S1 "ab" >#define S2 "cd" > > pp = (char **) Malloc(2 * sizeof(char *)); > > pp[0] = (char *) malloc(2); > memcpy(pp[0], S1, 2); > pp[1] = (char *) malloc(2); > memcpy(pp[1], S2, 2); > > printf("%s\n", *pp); > printf("%s\n", pp[0]); > printf("%s\n", pp[1]); Why should *pp == pp[0], or pp[1] be a nul-terminated string? You just copied the two characters. It's pure luck if there is a \0 at the end of any of these elements, or that the access doesn't cause a SEGV. If you do: > pp[0] = (char *) malloc(3); > memcpy(pp[0], S1, 3); > pp[1] = (char *) malloc(3); > memcpy(pp[1], S2, 3); instead, you copy the termination and things work as expected. Regards, Max _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"