bugs report: Version:gnugo 3.7.2 OS:windows 98 Compiler:Visual C++ 6.0 Debug tool:NuMega BoundsChecker 6.5 Reporter name:QingYu Ma Country:China Memory leak analyse: There is memory leak in the 773 lines of dragon.c. " if (dragon2 != NULL) free(dragon2); dragon2 = malloc(number_of_dragons * sizeof(*dragon2));". Because malloc() was executed more one time than free(); Details are given delow: this function(static void initialize_supplementary_dragon_data(void)) was called in the first time, free() didn't executed, while malloc() was executed; this function was called in the second time, the memory that was requested in the first time was freed by free(); go on and on, when this function was called at last time, memory that was requested by malloc()was not freed. In order to clarify this problem example program is given below: #include int *p = NULL; void Exam1(void); int main(int argc, char* argv[]) { int i; for(i=0; i<2; i++) Exam1(); return 0; } void Exam1(void) { if(p != NULL) free(p); p = (int *)malloc(sizeof(int)); } In this program, free() was executed one time, malloc() was executed two time, memory leak four bytes(win98). On the other hand, the prototype of malloc() is void *malloc(size_t size), I think we should do forcible type change. The standard use of malloc() is int *p = (int *)malloc(sizeof(int)*length). Can you help me: I want to known the way that two GnuGo play game each other in the Windows.