void*alloca()中不懂的

2014-11-23 22:51:34 · 作者: · 浏览: 95

  请看这个例子:


  FILE *open_err_file( char *name )
  {
   char *buffer;
   /* allocate temporary buffer for file name */
   buffer = (char *)alloca( strlen( name ) + 5 );
   if( buffer ) {
   FILE *fp;
   sprintf( buffer, "%s.err", name );
   fp = fopen( buffer, "w" );
   return fp;
   }
   return (FILE *)NULL;
  }

  int main( void )
  {
   FILE *fp;
   if((fp = open_err_file( "err_name" ))<0) {
   printf( "Unable to open error file\n" );
   return(1);
   } else {
   fprintf( fp, "Hello from the alloca test.\n" );
   fclose( fp );
   }
   return EXIT_SUCCESS;
  }