Copyright (C) 2000-2012 |
GNU Info (libc.info)GNU C Variable-Size ArraysGNU C Variable-Size Arrays .......................... In GNU C, you can replace most uses of `alloca' with an array of variable size. Here is how `open2' would look then: int open2 (char *str1, char *str2, int flags, int mode) { char name[strlen (str1) + strlen (str2) + 1]; stpcpy (stpcpy (name, str1), str2); return open (name, flags, mode); } But `alloca' is not always equivalent to a variable-sized array, for several reasons: * A variable size array's space is freed at the end of the scope of the name of the array. The space allocated with `alloca' remains until the end of the function. * It is possible to use `alloca' within a loop, allocating an additional block on each iteration. This is impossible with variable-sized arrays. *Note:* If you mix use of `alloca' and variable-sized arrays within one function, exiting a scope in which a variable-sized array was declared frees all blocks allocated with `alloca' during the execution of that scope. automatically generated by info2www version 1.2.2.9 |