CCmalloc
                                  -=-=-=-=-=

          The Magician of the Ivory Tower brought his latest invention for
      the master programmer to examine. The magician wheeled a large black
      box into the master's office while the master waited in silence.
          "This   is  an    integrated,    distributed,    general-purpose
      workstation,"  began  the  magician,  "ergonomically  designed  with
      a  proprietary   operating   system,  sixth  generation   languages,
      and multiple state of the art user interfaces. It took my assistants
      several hundred man years to construct. Is it not amazing?"
          The master raised his eyebrows slightly. "It is indeed amazing,"
      he said.
          "Corporate  Headquarters has commanded," continued the magician,
      "that  everyone use this workstation as a platform for new programs.
      Do you agree to this?"
          "Certainly,"  replied  the  master, "I will  have it transported
      to the data  center  immediately!" And the magician  returned to his
      tower, well pleased.
          Several  days  later, a novice  wandered  into the office of the
      master  programmer  and said, "I cannot  find the listing for my new
      program. Do you know where it might be?"
          "Yes,"  replied the master,  "the  listings  are  stacked on the
      platform in the data center."
                  -- Geoffrey James, "The Tao of Programming"

          Další  poměrně   šikovnou   knihovnou  pro  kontrolu  paměti  je
      ccmalloc. Ta se specializuje zejména na hledání  zapomenutých bloků,
      ale  podporuje  i některé  další  testy.  Umí  velmi  pěkně  nakonci
      sepsat   seznam   zapomenutých  bloků  srovnaných  podle  velikosti,
      nebo jiných kriterií.  Zobrazuje také některé  užitečné  statistiky,
      jako je maximální  použitá paměť atd. Její použití je velmi  podobné
      jako u  libefence,  nebo  jiných  knihoven.  Hlavní  sílu  ccmallocu
      vidím v jeho jednoduchosti na použití a poměrně  pěkně  zpracováných
      výpisech.

                       Výsledky testů jsou následující:

Chyby pro použití haldy
  zapomenuté naalokované bloky paměti      najde a ukáže řádky
  uvolnění nenaalokovaného bloku        free() in wrapper called before malloc()
  vícenásobné uvolnění  bloku              free() called twice for block at
                                           0x080587d0 of size 100, kde byl
                                           naalokován a kde byl už uvolněn
  alokace a realokace bloku o velikosti 0  malloc(0)
  použití paměti bez testu na selhání malloc
Chyby pro použití ukazatelů
  použití uvolněného bloku pro zápis
  použití uvolněného bloku pro čtení
  zápis za koncem pole v zásobníku (buffer owerflow)
  zápis za koncem alokovaného bloku       check-count=3: end of block at
                                          0x080587e0 of size 10 changed,
                                          ukáže, kde byl naalokován
  čtení za koncem alokovaného bloku
  zápis daleko za koncem alokovaného bloku
  zápis před koncem alokovaného bloku     (perhaps an 'under'write occured)
  čtení před koncem alokovaného bloku
  čtení neinicalizované paměti

                           Zdrojové kódy najdete na:
                sunsite.ms.mff.cuni.cz/pub/Linux/devel/lang/c.
    Podporované platofrmy: Linux, SunOS 4.3.1, Solaris 2.5 (aka SunOS 5.5)


            výheň