void*alloca()中不懂的

字號:

請看這個例子:
    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;
    }