static bool test2()

{

   const int n = 10000;

   unsigned char *buffers[n];

   static unsigned int sizes[] = {

      1, 2, 3, 4, 8, 12, 16, 24, 32, 48, 64, 80, 96, 128, 160, 256,

      340, 512, 640, 768, 1024, 1600, 2048, 3084, 4096 };

   unsigned char serial = 0;

   for ( int loop = 0; loop < sizeof(sizes)/sizeof(unsigned int); ++loop )

   {

      unsigned int size = sizes[loop];

      for ( int loop2 =0; loop2 < 10; ++loop2 )

      {

         serial += 1;

         for ( int index =0; index < n; ++index )

         {

            unsigned char *buffer = static_cast<unsigned char *>( malloc( size ) );

            buffers[index] = buffer;

            memset( buffer, serial + index, size );

         }

 

         for ( int index =0; index < n; ++index )

         {

            unsigned char *buffer = buffers[index];

            unsigned char expected = serial + index;

            for ( unsigned int offset = 0; offset < size; ++offset )

            {

               if ( buffer[offset] != expected )

               {

                  printf( "test2 failed: loop = %d, loop2 = %d, index = %d, size = %d\n",

                          loop, loop2, index, size );

                  return false;

               }

 

            }

            free( buffer );

         }

      }

   }

   return true;

}