cons.c
上传用户:nthfjj
上传日期:2007-01-07
资源大小:37k
文件大小:1k
源码类别:

系统编程

开发平台:

Unix_Linux

  1. /* Silly implementation of Lisp cons. Intentionally wastes lots of space */
  2. /* to test collector.                                                    */
  3. # include <stdio.h>
  4. # include "cons.h"
  5. int extra_count = 0;        /* Amount of space wasted in cons node */
  6. sexpr cons (x, y)
  7. sexpr x;
  8. sexpr y;
  9. {
  10.     register sexpr r;
  11.     register int i;
  12.     register int *p;
  13.     
  14.     extra_count++;
  15.     extra_count %= 3000;
  16.     r = (sexpr) gc_malloc(8 + extra_count);
  17.     for (p = (int *)r; ((char *)p) < ((char *)r) + extra_count + 8; p++) {
  18. if (*p) {
  19.     fprintf(stderr, "Found nonzero at %Xn", p);
  20.     abort(p);
  21.         }
  22.         *p = 13;
  23.     }
  24.     r -> sexpr_car = x;
  25.     r -> sexpr_cdr = y;
  26.     return(r);
  27. }