File: lsframe2.c

package info (click to toggle)
valgrind 1%3A3.10.0-4
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 97,452 kB
  • ctags: 62,380
  • sloc: ansic: 589,429; xml: 21,096; exp: 8,751; cpp: 7,366; asm: 6,526; perl: 5,656; sh: 5,334; makefile: 4,946; haskell: 195
file content (34 lines) | stat: -rw-r--r-- 769 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

/* Demonstrate Memcheck correctly handling chain of 64 recursive
   calls, each of which allocates a 1 M array on the stack.  Requires
   --main-stacksize=67117057 (on amd64-linux) or above, but works fine
   if you specify that. */

#include <stdio.h>

#define N_MBYTES 64

#define N_INTS_PER_MBYTE (1048576 / sizeof(int))

int rec ( int depth )
{
   int i, zzz;
   int arr[N_INTS_PER_MBYTE];
   if (depth == 0) return 0;
   for (i = 0; i < N_INTS_PER_MBYTE; i++)
      arr[i] = i * depth;
   zzz = rec(depth-1);
   for (i = 0; i < N_INTS_PER_MBYTE; i++)
       zzz += arr[i];
   return zzz;
}


int main ( void )
{
   int sum;
   fprintf(stderr, "lsframe2: start\n");
   sum = rec(N_MBYTES);
   fprintf(stderr, "lsframe2: done, result is %d\n", sum);
   return 0;
}