Ejemplo n.º 1
0
int main(void)
{
   int  x;
   int  y = 0;
   int* reachable;
   int* dubious;
   int* leaked;
   DECLARE_LEAK_COUNTERS;

   /* we require these longs to have same size as a machine word */
   assert(sizeof(long) == sizeof(void*));

   /* Error counting */
   fprintf(stderr, "errors: %d\n\n", VALGRIND_COUNT_ERRORS);

   if (x == 0) {
      y++;
   } else {
      y--;
   }

   fprintf(stderr, "errors: %d\n\n", VALGRIND_COUNT_ERRORS);

   // Get a baseline, after start-up and also after printf (because Darwin
   // printf allocates memory the first time it's called!)
   GET_INITIAL_LEAK_COUNTS;

   fprintf(stderr, "errors: %d\n\n", VALGRIND_COUNT_ERRORS);

   /* Leak checking */
   GET_FINAL_LEAK_COUNTS;
   PRINT_LEAK_COUNTS(stderr);
   fprintf(stderr, "\n");

   fprintf(stderr, "errors: %d\n\n", VALGRIND_COUNT_ERRORS);

   leaked = malloc(77);
   leaked = 0;

   dubious = malloc(88);
   dubious += 10;

   reachable = malloc(99);

   GET_FINAL_LEAK_COUNTS;
   PRINT_LEAK_COUNTS(stderr);
   fprintf(stderr, "\n");

   fprintf(stderr, "errors: %d\n", VALGRIND_COUNT_ERRORS);

   return 0;
}
Ejemplo n.º 2
0
int main(void)
{
   DECLARE_LEAK_COUNTERS;

   GET_INITIAL_LEAK_COUNTS;

   // See leak-cases.c for why we do the work in f().
   f();

   GET_FINAL_LEAK_COUNTS;

   PRINT_LEAK_COUNTS(stderr);

   return 0;
}
Ejemplo n.º 3
0
int main()
{
	DECLARE_LEAK_COUNTERS;

	struct n *volatile c1, *volatile c2;

        GET_INITIAL_LEAK_COUNTS;

	/* two simple cycles */
	c1 = mkcycle();
	c2 = mkcycle();

	c1 = c2 = 0;

	/* one cycle linked to another */
	c1 = mkcycle();
	c2 = mkcycle();

	/* This is to make sure we end up merging cliques; see
	   mc_leakcheck.c */
	if (c1 < c2)
		c2->r = c1;
	else
		c1->r = c2;

	c1 = c2 = 0;

	/* two linked cycles */
	c1 = mkcycle();
	c2 = mkcycle();

	c1->r = c2;
	c2->r = c1;

	c1 = c2 = 0;

	CLEAR_CALLER_SAVED_REGS;

	GET_FINAL_LEAK_COUNTS;

	PRINT_LEAK_COUNTS(stderr);

	return 0;
}
Ejemplo n.º 4
0
int main()
{
	DECLARE_LEAK_COUNTERS;

	struct n *volatile c1, *volatile c2;

        GET_INITIAL_LEAK_COUNTS;

	
	c1 = mkcycle();
	c2 = mkcycle();

	c1 = c2 = 0;

	
	c1 = mkcycle();
	c2 = mkcycle();

	if (c1 < c2)
		c2->r = c1;
	else
		c1->r = c2;

	c1 = c2 = 0;

	
	c1 = mkcycle();
	c2 = mkcycle();

	c1->r = c2;
	c2->r = c1;

	c1 = c2 = 0;

	CLEAR_CALLER_SAVED_REGS;

	GET_FINAL_LEAK_COUNTS;

	PRINT_LEAK_COUNTS(stderr);

	return 0;
}