somRenewNoZero - Example Code

#include <animal.h>

main()
{
  void *myAnimalCluster;
  Animal animals[5];
  SOMClass animalClass;
  int animalSize, i;

  animalClass =
      AnimalNewClass(Animal_MajorVersion,Animal_MinorVersion);
  animalSize = _somGetInstanceSize (animalClass);
  /* Round up to double-word multiple */
  animalSize = ((animalSize+3)/4)*4;
  /*
   * Next line allocates room for 5 objects
   * in a "cluster" with a single memory-
   * allocation operation.
   */
  myAnimalCluster = SOMMalloc (5*animalSize);
  /*
   * The for-loop that follows creates 5 initialized
   * Animal instances within the memory cluster.
   */
  for (i=0; i
     animals[i] =
     _somRenew(animalClass, myAnimalCluster+(i*animalSize));
  /* Uninitialize the animals explicitly: */
  for (i=0; i
     _somUninit(animals[i]);
  /*
   * Finally, the next line frees all 5 animals
   * with one operation.
   */
  SOMFree (myAnimalCluster);
}


[Back: somRenewNoZero - Related Methods]
[Next: somRenewNoZero - Topics]