⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 memory.c

📁 Genetic Programing of music
💻 C
字号:
/*  lil-gp Genetic Programming System, version 1.0, 11 July 1995 *  Copyright (C) 1995  Michigan State University *  *  This program is free software; you can redistribute it and/or modify *  it under the terms of version 2 of the GNU General Public License as *  published by the Free Software Foundation. *  *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. *  *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *   *  Douglas Zongker       (zongker@isl.cps.msu.edu) *  Dr. Bill Punch        (punch@isl.cps.msu.edu) * *  Computer Science Department *  A-714 Wells Hall *  Michigan State University *  East Lansing, Michigan  48824 *  USA *   */#include <lilgp.h>#ifdef MEMORY_LOGextern FILE *mlog;#endifstatic int totalalloc = 0;static int maxalloc   = 0;static int freealloc  = 0;static int curalloc   = 0;static int malloccalls = 0;static int freecalls = 0;static int realloccalls = 0;/* get_memory_stats() * * returns the memory statistics stored in static global * variables. */void get_memory_stats ( int *total, int *free, int *max,                       int *mallocc, int *reallocc, int *freec ){     *total = totalalloc;     *free = freealloc;     *max = maxalloc;     *mallocc = malloccalls;     *reallocc = realloccalls;     *freec = freecalls;}/* track_malloc() * * like malloc(), but tracks memory block size. */void *track_malloc ( int size ){     unsigned char *p;     if ( size == 0 )          return NULL;          p = (unsigned char *)malloc ( size+EXTRAMEM );     if ( p == NULL )          return NULL;     ++malloccalls;     totalalloc += size;     curalloc += size;     if ( curalloc > maxalloc )          maxalloc = curalloc;     *(int *)p = size;#ifdef MEMORY_LOG     fprintf ( mlog, "MALLOC %d %08x\n", size, (void *)(p+EXTRAMEM) );     fflush ( mlog );#endif     return (void *)(p+EXTRAMEM);}/* track_free() * * like free(), but tracks memory block size.  use with pointers * returned by track_malloc(). */void track_free ( void *p ){     int size;     if ( p == NULL )          return;#ifdef MEMORY_LOG     fprintf ( mlog, "FREE %08x\n", p );     fflush ( mlog );#endif          size = *(int *)((unsigned char *)p-EXTRAMEM);     ++freecalls;     curalloc -= size;     freealloc += size;     free ( (unsigned char *)p-EXTRAMEM );}     /* *track_realloc() * * like realloc(), but tracks memory block size.  use with pointers * returned by track_malloc(). */void *track_realloc ( void *p, int newsize ){     int size, change;     if ( p == NULL )          return MALLOC ( newsize );          size = *(int *)((unsigned char *)p-EXTRAMEM);     change = newsize-size;     curalloc += change;     if ( curalloc > maxalloc )          maxalloc = curalloc;     if ( change > 0 )          totalalloc += change;     else          freealloc -= change;     ++realloccalls;#ifdef MEMORY_LOG     fprintf ( mlog, "REALLOC %08x", p );#endif     p = realloc ( (unsigned char *)p-EXTRAMEM, newsize+EXTRAMEM );     *(int *)p = newsize;#ifdef MEMORY_LOG     fprintf ( mlog, " %d %08x\n", newsize, (void *)((unsigned char *)p+EXTRAMEM) );     fflush ( mlog );#endif     return (void *)((unsigned char *)p+EXTRAMEM);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -