예제 #1
0
main() {
#else
void memory_stress(void) {
#endif


  size_t i;

  int idx;

  DEBUG_MSG( "Size of umm_heap is %d\n", sizeof(umm_heap)       );
  DEBUG_MSG( "Size of header   is %d\n", sizeof(umm_heap[0])    );
  DEBUG_MSG( "Size of nblock   is %d\n", sizeof(umm_heap[0].header.used.next) );
  DEBUG_MSG( "Size of pblock   is %d\n", sizeof(umm_heap[0].header.used.prev) );
  DEBUG_MSG( "Size of nfree    is %d\n", sizeof(umm_heap[0].body.free.next)   );
  DEBUG_MSG( "Size of pfree    is %d\n", sizeof(umm_heap[0].body.free.prev)   );

  //memset( umm_heap, 0, sizeof(umm_heap) );

  umm_info( NULL, 1 );
  
   for( idx=0; idx<256; ++idx )
     ptr_array[idx] = (void *)NULL;
 
   //for( idx=0; idx<6553500; ++idx ) {
   for( idx=0; idx<65535; ++idx ) {
     i = rand()%256;
 
     switch( rand() % 16 ) {
 
     case  0:
     case  1:
     case  2:
     case  3:
     case  4:
     case  5:
     case  6: ptr_array[i] = umm_realloc(ptr_array[i], 0);
                break;
     case  7:
     case  8: ptr_array[i] = umm_realloc(ptr_array[i], rand()%40 );
                break;
 
     case  9:
     case 10:
     case 11:
     case 12: ptr_array[i] = umm_realloc(ptr_array[i], rand()%100 );
                break;
 
     case 13:
     case 14: ptr_array[i] = umm_realloc(ptr_array[i], rand()%200 );
                break;
 
     default: ptr_array[i] = umm_realloc(ptr_array[i], rand()%400 );
              break;
       }
     }

  umm_info( NULL, 1 );

}
예제 #2
0
/*
 * Wrapper for `umm_realloc()` which performs additional checks
 */
static void *wrap_realloc(void *ptr, size_t size) {
  free_blocks_check();
  void *ret = umm_realloc(ptr, size);
  free_blocks_check();
  return ret;
}
예제 #3
0
void *pvPortRealloc(void *ptr, size_t size, const char *file, unsigned line) {
  (void) file;
  (void) line;

  return umm_realloc(ptr, size);
}
예제 #4
0
파일: heap4.c 프로젝트: hervefox/Arduino
void * ICACHE_RAM_ATTR realloc(void *mem, size_t newsize){
  return umm_realloc(mem, ((newsize + 3) & ~((size_t)0x3)));
}