The GNU C Library - GNU C Variable-Size Arrays

Node: GNU C Variable-Size Arrays Prev: Disadvantages of Alloca Up: Variable Size Automatic

GNU 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];
	  strcpy (name, str1);
	  strcat (name, str2);
	  return open (name, flags, mode);
	}

But alloca is not always equivalent to a variable-sized array, for several reasons:

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.


Up: Variable Size Automatic