Copyright (C) 2000-2012 |
GNU Info (libc.info)Alloca Example`alloca' Example ................ As an example of the use of `alloca', here is a function that opens a file name made from concatenating two argument strings, and returns a file descriptor or minus one signifying failure: int open2 (char *str1, char *str2, int flags, int mode) { char *name = (char *) alloca (strlen (str1) + strlen (str2) + 1); stpcpy (stpcpy (name, str1), str2); return open (name, flags, mode); } Here is how you would get the same results with `malloc' and `free': int open2 (char *str1, char *str2, int flags, int mode) { char *name = (char *) malloc (strlen (str1) + strlen (str2) + 1); int desc; if (name == 0) fatal ("virtual memory exceeded"); stpcpy (stpcpy (name, str1), str2); desc = open (name, flags, mode); free (name); return desc; } As you can see, it is simpler with `alloca'. But `alloca' has other, more important advantages, and some disadvantages. automatically generated by info2www version 1.2.2.9 |