(linenum→info "unix/slp.c:2238")

glibc/2.7/malloc/tst-mallocstate.c

    1: /* Copyright (C) 2001 Free Software Foundation, Inc.
    2:    This file is part of the GNU C Library.
    3:    Contributed by Wolfram Gloger <wg@malloc.de>, 2001.
    4: 
    5:    The GNU C Library is free software; you can redistribute it and/or
    6:    modify it under the terms of the GNU Lesser General Public
    7:    License as published by the Free Software Foundation; either
    8:    version 2.1 of the License, or (at your option) any later version.
    9: 
   10:    The GNU C Library is distributed in the hope that it will be useful,
   11:    but WITHOUT ANY WARRANTY; without even the implied warranty of
   12:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   13:    Lesser General Public License for more details.
   14: 
   15:    You should have received a copy of the GNU Lesser General Public
   16:    License along with the GNU C Library; if not, write to the Free
   17:    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   18:    02111-1307 USA.  */
   19: 
   20: #include <errno.h>
   21: #include <stdio.h>
   22: #include "malloc.h"
   23: 
   24: static int errors = 0;
   25: 
   26: static void
   27: merror (const char *msg)
   28: {
   29:   ++errors;
   30:   printf ("Error: %s\n", msg);
   31: }
   32: 
   33: int
   34: main (void)
   35: {
   36:   void *p1, *p2;
   37:   void *save_state;
   38:   long i;
   39: 
   40:   errno = 0;
   41: 
   42:   p1 = malloc (10);
   43:   if (p1 == NULL)
   44:     merror ("malloc (10) failed.");
   45: 
   46:   p2 = malloc (20);
   47:   if (p2 == NULL)
   48:     merror ("malloc (20) failed.");
   49: 
   50:   free (malloc (10));
   51: 
   52:   for (i=0; i<100; ++i)
   53:     {
   54:       save_state = malloc_get_state ();
   55:       if (save_state == NULL)
   56:         {
   57:           merror ("malloc_get_state () failed.");
   58:           break;
   59:         }
   60:       /*free (malloc (10)); This could change the top chunk! */
   61:       malloc_set_state (save_state);
   62:       p1 = realloc (p1, i*4 + 4);
   63:       if (p1 == NULL)
   64:         merror ("realloc (i*4) failed.");
   65:       free (save_state);
   66:     }
   67: 
   68:   p1 = realloc (p1, 40);
   69:   free (p2);
   70:   p2 = malloc (10);
   71:   if (p2 == NULL)
   72:     merror ("malloc (10) failed.");
   73:   free (p1);
   74: 
   75:   return errors != 0;
   76: }
   77: 
   78: /*
   79:  * Local variables:
   80:  * c-basic-offset: 2
   81:  * End:
   82:  */
Syntax (Markdown)