Advertisement
PierrotLL

test-malloc.c

Feb 18th, 2015
505
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.27 KB | None | 0 0
  1. #include "fxlib.h"
  2. #include "stdlib.h"
  3.  
  4. void PrintInt(int n)
  5. {
  6.     char str[20]="0";
  7.     int i, l=0;
  8.     for(i=n ; i ; i/=10)
  9.         l++;
  10.     for(i=n ; i ; i/=10)
  11.         str[--l] = i%10+'0';
  12.     Print(str);
  13. }
  14.  
  15. int input(int x, int y)
  16. {
  17.     int nb=0, key=0;
  18.     while(key != KEY_CTRL_EXE)
  19.     {
  20.         locate(x, y);
  21.         PrintInt(nb);
  22.         Print("_ ");
  23.         GetKey(&key);
  24.         if(key>='0' && key<='9') nb = nb*10+key-'0';
  25.         if(key == KEY_CTRL_DEL) nb /= 10;
  26.     }
  27.     return nb;
  28. }
  29.  
  30. int AddIn_main(int isAppli, unsigned short OptionNum)
  31. {
  32.     int i, j, size, nb, key, plante, modulo;
  33.     char **ptr=0;
  34.     while(1)
  35.     {
  36.         Bdisp_AllClr_VRAM();
  37.         nb = 0;
  38.         while(nb == 0)
  39.             nb = input(1, 1);
  40.         ptr = malloc(nb*sizeof(char*));
  41.         for(i=0 ; i<nb ; i++) ptr[i]=0;
  42.         key=1;
  43.         size=0;
  44.         modulo=128;
  45.         while(key)
  46.         {
  47.             size++;
  48.             for(i=0 ; i<nb ; i++)
  49.             {
  50.                 free(ptr[i]);
  51.                 ptr[i]=0;
  52.             }
  53.             for(i=0 ; i<nb && key ; i++)
  54.             {
  55.                 ptr[i]=malloc(size);
  56.                 if(!ptr[i]) key=0;
  57.             }
  58.             if(key)
  59.             {
  60.                 for(i=0 ; i<nb ; i++)
  61.                 {
  62.                     for(j=2 ; j<256 && ((int)ptr[i])%j==0 ; j*=2);
  63.                     if(j < modulo) modulo = j;
  64.                 }
  65.             }
  66.         }
  67.         plante = i;
  68.         for(i=0 ; i<nb ; i++)
  69.             free(ptr[i]);
  70.         free(ptr);
  71.         Bdisp_AllClr_VRAM();
  72.         locate(1, 1);
  73.         PrintInt(nb);
  74.         Print(" buffers");
  75.         locate(1, 2);
  76.         PrintInt(size-1);
  77.         Print(" octets chacun");
  78.         locate(1, 3);
  79.         PrintInt((size-1)*nb + 4*nb);
  80.         Print(" octets au total");
  81.         locate(1, 4);
  82.         Print("Plante au n ");
  83.         PrintInt(plante);
  84.         locate(1, 5);
  85.         Print("Adr multiples de ");
  86.         PrintInt(modulo);
  87.         GetKey(&key);
  88.     }
  89.     return 1;
  90. }
  91.  
  92. #pragma section _BR_Size
  93. unsigned long BR_Size;
  94. #pragma section
  95. #pragma section _TOP
  96. int InitializeSystem(int isAppli, unsigned short OptionNum)
  97. {
  98.     return INIT_ADDIN_APPLICATION(isAppli, OptionNum);
  99. }
  100. #pragma section
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement