static void run(size_t maxsize, size_t records, size_t loops) { int n,m; static void *mem[RECORDS]; for(m=0; m<loops; m++) { for(n=0; n<records-1; n++) { static int reallocflip; int dorealloc=(reallocflip=!reallocflip); size_t size=rand() & (maxsize-1); if(!mem[n]) mem[n]=nedmalloc(size); else if(n>0 && dorealloc) mem[n-1]=nedrealloc(mem[n-1], size); else if(n>1) { nedfree(mem[n-2]); mem[n-2]=0; } } } for(n=0; n<records; n++) { if(mem[n]) { nedfree(mem[n]); mem[n]=0; } } }
void dlfree(void* m) //maks { #ifdef DISABLE_DLMALLOC free(m); #else nedfree(m); #endif }
void MallocStabTest(){ printf("test\n"); void ** test=(void**)nedmalloc(1024*1024*16*sizeof(void**)); for(int i=0;i<(1024*1024*16);i++) test[i]=NULL; for(int j=0;j<10000000;j++){ int testbyte=rand()%((1024*1024*16)-128); for(int w=0;w<127;w++){ if(test[testbyte+w]){ nedfree(test[testbyte+w]); test[testbyte+w]=NULL; } } test[testbyte++]=nedmalloc(10); test[testbyte++]=nedmalloc(40); test[testbyte++]=nedmalloc(100); test[testbyte+2]=nedmalloc(100); test[testbyte+1]=nedmalloc(40); test[testbyte]=nedmalloc(7); testbyte+=3; void * mallblocks[7]; size_t mallsz[7]={10,20,30,40,50,60,70}; nedindependent_comalloc(7, mallsz, mallblocks); test[testbyte++]=mallblocks[0]; test[testbyte++]=mallblocks[6]; test[testbyte++]=mallblocks[2]; test[testbyte++]=mallblocks[5]; test[testbyte++]=mallblocks[4]; test[testbyte++]=mallblocks[3]; test[testbyte++]=mallblocks[1]; } for(int i=0;i<(1024*1024*16);i++) if(test[i]) nedfree(test[i]); nedfree(test); printf("end\n"); }
void Free(void * Pointer) { TE_ASSERT(Pointer); #ifdef TE_MEMORY_USE_NEDMALLOC nedfree(Pointer); #else free(Pointer); #endif ++memoryFreeCallsCount; }
void ReleaseMemory( void* ptr ) { nedfree( ptr ); }