Messages in this thread | | | Date | Mon, 24 Apr 2006 15:45:57 -0700 | From | "marty fouts" <> | Subject | Re: Compiling C++ modules |
| |
On 4/24/06, Martin Mares <mj@ucw.cz> wrote: > Hello! > > > Oh, and yeah, a = b + c *is* more readable than > > > > a = malloc(strlen(b) + strlen(c)); > > strcpy(a,b); > > strcat(a,c); > > > > and contains fewer bugs ;) > > Actually, it contains at least the bug you have made in your C example, > that is forgetting that malloc() can fail. So can string addition, if > allocated dynamically.
It's too small of a fragment to tell whether or not appropriate exception handling has been set up, but yeah, it needs a try/catch to be safe. That's *1* of the bugs in the c example. It's the one they share.
It's not the only one in the C code, though, as Willy Tarreau pointed out, the malloc idiom is wrong, since it doesn't allocate space for the terminating null.
Of course, the C fragment has the implicit problem of who will do the associated free to avoid the memory leak, where the C++ fragment has the issue of garbage collection... - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |