Thread: Need help by debugging Memory Leak

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Registered User
    Join Date
    Feb 2019
    Posts
    69

    Need help by debugging Memory Leak

    Here is a link to full chess program:
    GitHub - SuchtyTV/Odin

    Trying to debug this code using Valgrind shows huge memory leaks, which I cannot locate.

    I suspect the error to be here:

    Code:
        #include "calculation.h"#include "odinutilities.h"
    #include "chess.h"
    #include "board.h"
    #include <stdio.h>
    #include <string.h>
    
    
    double calculateBoard(BOARD_STATE* pstate){
        double sum = 0;
        for(int i = 0; i < 8; i++){
            for(int k = 0; k<8; k++){
                if(pstate->board[i][k] == king){
                    sum += 100;
                    continue;
                } else if(pstate->board[i][k] == -king) {
                    sum += -100;
                    continue;
                }
                sum += pstate->board[i][k];
            }
        }
        return sum;
    
    
        /*
         * Add Neural Network
         */
    }
    
    
    int init_ODIN_Node(ODIN_Node* pnode, BOARD_STATE state){
        pnode->state = state;
        pnode->leaves_size = INITIAL_LEAVES_FOR_NODE;
        pnode->leaves = malloc(sizeof(ODIN_Node)*INITIAL_LEAVES_FOR_NODE);
        if(pnode->leaves == NULL){
            printf("MALLOC FAILED\n");
            return 0;
        }
        pnode->used_leaves_size = 0;
        return 1;
    }
    
    
    int add_Leaf_Copy(ODIN_Node* psrc, ODIN_Node* pto_be_added){
        if (psrc->leaves_size <= psrc->used_leaves_size) {
            ODIN_Node* p = realloc(psrc->leaves,
                    (size_t)(2 * (psrc->leaves_size) * sizeof(ODIN_Node)));
            psrc->leaves_size = 2* (psrc->leaves_size);
            if (!p) {
                return 0;
            } else {
                psrc->leaves = p;
            }
        }
        memcpy(&(psrc->leaves[psrc->used_leaves_size++]),pto_be_added,sizeof(ODIN_Node));
        return 1;
    }
    
    
    void free_ODIN_NODE(ODIN_Node* pnode){
        for(int i = 0; i < pnode->used_leaves_size; i++){
            free_ODIN_NODE(&(pnode->leaves[i]));
        }
        if(pnode->leaves_size != 0){
            free(pnode->leaves);
        }
        pnode->used_leaves_size = 0;
        pnode->leaves_size = 0;
    }
    
    
    double minimax(ODIN_Node* pnode, int depth, char color, double alpha, double beta){
        if(depth == 0 || is_game_over(&(pnode->state))){
            pnode->score = calculateBoard(&(pnode->state));
            return calculateBoard(&(pnode->state));
        }
    
    
        double maxeval = -WORST_POSSIBLE_SCORE;
        MOVE_DATA move_data = return_all_legal_moves(&(pnode->state));
    
    
        switch(color){
        case white: ; //This is an empty instruction
            for(int i = 0; i < move_data.used_array_size; i++){
                BOARD_STATE state = make_move_with_copy(&(pnode->state), move_data.moves[i]);
                ODIN_Node new_node;
                init_ODIN_Node(&new_node, state);
                add_Leaf_Copy(pnode, &new_node);
                double eval = minimax(&(pnode->leaves[i]), depth-1,(char)(-color), alpha, beta);
                maxeval = max(maxeval, eval);
                alpha = max(alpha, eval);
                if(beta <= alpha){
                    break;
                }
            }
            break;
        case black: ; //This is an empty instruction
            maxeval = WORST_POSSIBLE_SCORE;
            for(int i = 0; i < move_data.used_array_size; i++){
                BOARD_STATE state = make_move_with_copy(&(pnode->state), move_data.moves[i]);
                ODIN_Node new_node;
                init_ODIN_Node(&new_node, state);
                add_Leaf_Copy(pnode, &new_node);
                double eval = minimax(&(pnode->leaves[i]), depth-1,(char)(-color), alpha, beta);
                maxeval = min(maxeval, eval);
                beta = min(beta, eval);
                if(beta <= alpha){
                    break;
                }
            }
            break;
        }
        pnode->score = maxeval;
        delete_MOVE_DATA(&move_data);
        return maxeval;
    }
    However, I see no certain flaw in the logic.

    Minimax is the function creating the tree to calculate the next move and therby evaluating the board. Therefore first all possible moves for the board will be generated. After this, every move will be played on the current board. Then the resulting board will be added as a new leaf/child for the tree.

    What are your impressions?

    Thank you!

    Valgrind:

    ==19752== 404 (320 direct, 84 indirect) bytes in 1 blocks are definitely lost in loss record 98 of 158
    ==19752== at 0x4C31D2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==19752== by 0x109EEA: add_move_to_data (board.c:440)
    ==19752== by 0x10A17B: add_move_if_unused_by_equal_color (board.c:497)
    ==19752== by 0x10941A: store_all_moves_of_rook (board.c:162)
    ==19752== by 0x10959A: store_all_moves_of_queen (board.c:202)
    ==19752== by 0x109CB5: return_all_moves (board.c:381)
    ==19752== by 0x10A64A: filter_all_legal_moves (board.c:580)
    ==19752== by 0x1099EE: return_all_legal_moves (board.c:316)
    ==19752== by 0x10AF6F: minimax (calculation.c:74)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752== by 0x10B4BC: main (main.c:43)
    ==19752==
    ==19752== 407 (320 direct, 87 indirect) bytes in 1 blocks are definitely lost in loss record 99 of 158
    ==19752== at 0x4C31D2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==19752== by 0x109EEA: add_move_to_data (board.c:440)
    ==19752== by 0x10A17B: add_move_if_unused_by_equal_color (board.c:497)
    ==19752== by 0x109170: store_all_moves_of_knight (board.c:112)
    ==19752== by 0x109BEF: return_all_moves (board.c:360)
    ==19752== by 0x10A64A: filter_all_legal_moves (board.c:580)
    ==19752== by 0x1099EE: return_all_legal_moves (board.c:316)
    ==19752== by 0x10AF6F: minimax (calculation.c:74)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B4BC: main (main.c:43)
    ==19752==
    ==19752== 437 (320 direct, 117 indirect) bytes in 1 blocks are definitely lost in loss record 101 of 158
    ==19752== at 0x4C31D2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==19752== by 0x109EEA: add_move_to_data (board.c:440)
    ==19752== by 0x109FF9: generate_all_moves_of_bishops_direction (board.c:468)
    ==19752== by 0x10954D: store_all_moves_of_bishop (board.c:191)
    ==19752== by 0x1095C7: store_all_moves_of_queen (board.c:207)
    ==19752== by 0x109CB5: return_all_moves (board.c:381)
    ==19752== by 0x10A64A: filter_all_legal_moves (board.c:580)
    ==19752== by 0x1099EE: return_all_legal_moves (board.c:316)
    ==19752== by 0x10AF6F: minimax (calculation.c:74)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752==
    ==19752== 781 (640 direct, 141 indirect) bytes in 1 blocks are definitely lost in loss record 110 of 158
    ==19752== at 0x4C31D2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==19752== by 0x109EEA: add_move_to_data (board.c:440)
    ==19752== by 0x109FF9: generate_all_moves_of_bishops_direction (board.c:468)
    ==19752== by 0x109510: store_all_moves_of_bishop (board.c:186)
    ==19752== by 0x109C31: return_all_moves (board.c:367)
    ==19752== by 0x10A64A: filter_all_legal_moves (board.c:580)
    ==19752== by 0x1099EE: return_all_legal_moves (board.c:316)
    ==19752== by 0x10AF6F: minimax (calculation.c:74)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B4BC: main (main.c:43)
    ==19752==
    ==19752== 814 (640 direct, 174 indirect) bytes in 2 blocks are definitely lost in loss record 112 of 158
    ==19752== at 0x4C31D2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==19752== by 0x109EEA: add_move_to_data (board.c:440)
    ==19752== by 0x10A17B: add_move_if_unused_by_equal_color (board.c:497)
    ==19752== by 0x109170: store_all_moves_of_knight (board.c:112)
    ==19752== by 0x109BEF: return_all_moves (board.c:360)
    ==19752== by 0x10A64A: filter_all_legal_moves (board.c:580)
    ==19752== by 0x1099EE: return_all_legal_moves (board.c:316)
    ==19752== by 0x10AF6F: minimax (calculation.c:74)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752== by 0x10B4BC: main (main.c:43)
    ==19752==
    ==19752== 874 (640 direct, 234 indirect) bytes in 2 blocks are definitely lost in loss record 113 of 158
    ==19752== at 0x4C31D2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==19752== by 0x109EEA: add_move_to_data (board.c:440)
    ==19752== by 0x108EC8: store_all_moves_of_pawn (board.c:51)
    ==19752== by 0x109BAD: return_all_moves (board.c:353)
    ==19752== by 0x10A64A: filter_all_legal_moves (board.c:580)
    ==19752== by 0x1099EE: return_all_legal_moves (board.c:316)
    ==19752== by 0x10AF6F: minimax (calculation.c:74)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752== by 0x10B4BC: main (main.c:43)
    ==19752==
    ==19752== 1,712 (1,280 direct, 432 indirect) bytes in 4 blocks are definitely lost in loss record 122 of 158
    ==19752== at 0x4C31D2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==19752== by 0x109EEA: add_move_to_data (board.c:440)
    ==19752== by 0x109FF9: generate_all_moves_of_bishops_direction (board.c:468)
    ==19752== by 0x1094D3: store_all_moves_of_bishop (board.c:181)
    ==19752== by 0x109C31: return_all_moves (board.c:367)
    ==19752== by 0x10A64A: filter_all_legal_moves (board.c:580)
    ==19752== by 0x1099EE: return_all_legal_moves (board.c:316)
    ==19752== by 0x10AF6F: minimax (calculation.c:74)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752==
    ==19752== 2,855 (2,240 direct, 615 indirect) bytes in 7 blocks are definitely lost in loss record 127 of 158
    ==19752== at 0x4C31D2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==19752== by 0x109EEA: add_move_to_data (board.c:440)
    ==19752== by 0x10A17B: add_move_if_unused_by_equal_color (board.c:497)
    ==19752== by 0x109393: store_all_moves_of_rook (board.c:153)
    ==19752== by 0x10959A: store_all_moves_of_queen (board.c:202)
    ==19752== by 0x109CB5: return_all_moves (board.c:381)
    ==19752== by 0x10A64A: filter_all_legal_moves (board.c:580)
    ==19752== by 0x1099EE: return_all_legal_moves (board.c:316)
    ==19752== by 0x10AF6F: minimax (calculation.c:74)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752==
    ==19752== 3,002 (2,240 direct, 762 indirect) bytes in 7 blocks are definitely lost in loss record 129 of 158
    ==19752== at 0x4C31D2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==19752== by 0x109EEA: add_move_to_data (board.c:440)
    ==19752== by 0x109FF9: generate_all_moves_of_bishops_direction (board.c:468)
    ==19752== by 0x10954D: store_all_moves_of_bishop (board.c:191)
    ==19752== by 0x109C31: return_all_moves (board.c:367)
    ==19752== by 0x10A64A: filter_all_legal_moves (board.c:580)
    ==19752== by 0x1099EE: return_all_legal_moves (board.c:316)
    ==19752== by 0x10AF6F: minimax (calculation.c:74)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752==
    ==19752== 4,624 (3,520 direct, 1,104 indirect) bytes in 11 blocks are definitely lost in loss record 135 of 158
    ==19752== at 0x4C31D2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==19752== by 0x109EEA: add_move_to_data (board.c:440)
    ==19752== by 0x109047: store_all_moves_of_pawn (board.c:78)
    ==19752== by 0x109BAD: return_all_moves (board.c:353)
    ==19752== by 0x10A64A: filter_all_legal_moves (board.c:580)
    ==19752== by 0x1099EE: return_all_legal_moves (board.c:316)
    ==19752== by 0x10AF6F: minimax (calculation.c:74)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B4BC: main (main.c:43)
    ==19752==
    ==19752== 6,725 (5,120 direct, 1,605 indirect) bytes in 16 blocks are definitely lost in loss record 137 of 158
    ==19752== at 0x4C31D2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==19752== by 0x109EEA: add_move_to_data (board.c:440)
    ==19752== by 0x109FF9: generate_all_moves_of_bishops_direction (board.c:468)
    ==19752== by 0x109510: store_all_moves_of_bishop (board.c:186)
    ==19752== by 0x1095C7: store_all_moves_of_queen (board.c:207)
    ==19752== by 0x109CB5: return_all_moves (board.c:381)
    ==19752== by 0x10A64A: filter_all_legal_moves (board.c:580)
    ==19752== by 0x1099EE: return_all_legal_moves (board.c:316)
    ==19752== by 0x10AF6F: minimax (calculation.c:74)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752==
    ==19752== 7,985 (6,080 direct, 1,905 indirect) bytes in 19 blocks are definitely lost in loss record 138 of 158
    ==19752== at 0x4C31D2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==19752== by 0x109EEA: add_move_to_data (board.c:440)
    ==19752== by 0x108F4D: store_all_moves_of_pawn (board.c:61)
    ==19752== by 0x109BAD: return_all_moves (board.c:353)
    ==19752== by 0x10A64A: filter_all_legal_moves (board.c:580)
    ==19752== by 0x1099EE: return_all_legal_moves (board.c:316)
    ==19752== by 0x10AF6F: minimax (calculation.c:74)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B4BC: main (main.c:43)
    ==19752==
    ==19752== 9,706 (7,360 direct, 2,346 indirect) bytes in 23 blocks are definitely lost in loss record 141 of 158
    ==19752== at 0x4C31D2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==19752== by 0x109EEA: add_move_to_data (board.c:440)
    ==19752== by 0x10A17B: add_move_if_unused_by_equal_color (board.c:497)
    ==19752== by 0x10930D: store_all_moves_of_rook (board.c:144)
    ==19752== by 0x109C73: return_all_moves (board.c:374)
    ==19752== by 0x10A64A: filter_all_legal_moves (board.c:580)
    ==19752== by 0x1099EE: return_all_legal_moves (board.c:316)
    ==19752== by 0x10AF6F: minimax (calculation.c:74)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B4BC: main (main.c:43)
    ==19752==
    ==19752== 11,208 (8,640 direct, 2,568 indirect) bytes in 25 blocks are definitely lost in loss record 143 of 158
    ==19752== at 0x4C31D2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==19752== by 0x109EEA: add_move_to_data (board.c:440)
    ==19752== by 0x10A17B: add_move_if_unused_by_equal_color (board.c:497)
    ==19752== by 0x109393: store_all_moves_of_rook (board.c:153)
    ==19752== by 0x109C73: return_all_moves (board.c:374)
    ==19752== by 0x10A64A: filter_all_legal_moves (board.c:580)
    ==19752== by 0x1099EE: return_all_legal_moves (board.c:316)
    ==19752== by 0x10AF6F: minimax (calculation.c:74)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752==
    ==19752== 11,775 (9,600 direct, 2,175 indirect) bytes in 21 blocks are definitely lost in loss record 145 of 158
    ==19752== at 0x4C31D2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==19752== by 0x109EEA: add_move_to_data (board.c:440)
    ==19752== by 0x10A17B: add_move_if_unused_by_equal_color (board.c:497)
    ==19752== by 0x109170: store_all_moves_of_knight (board.c:112)
    ==19752== by 0x109BEF: return_all_moves (board.c:360)
    ==19752== by 0x10A64A: filter_all_legal_moves (board.c:580)
    ==19752== by 0x1099EE: return_all_legal_moves (board.c:316)
    ==19752== by 0x10AF6F: minimax (calculation.c:74)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B4BC: main (main.c:43)
    ==19752==
    ==19752== 13,130 (10,880 direct, 2,250 indirect) bytes in 17 blocks are definitely lost in loss record 146 of 158
    ==19752== at 0x4C31D2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==19752== by 0x109EEA: add_move_to_data (board.c:440)
    ==19752== by 0x10A17B: add_move_if_unused_by_equal_color (board.c:497)
    ==19752== by 0x109711: store_all_moves_of_king (board.c:230)
    ==19752== by 0x109CF3: return_all_moves (board.c:388)
    ==19752== by 0x10A64A: filter_all_legal_moves (board.c:580)
    ==19752== by 0x1099EE: return_all_legal_moves (board.c:316)
    ==19752== by 0x10AF6F: minimax (calculation.c:74)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752==
    ==19752== 16,266 (13,440 direct, 2,826 indirect) bytes in 21 blocks are definitely lost in loss record 147 of 158
    ==19752== at 0x4C31D2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==19752== by 0x109EEA: add_move_to_data (board.c:440)
    ==19752== by 0x109FF9: generate_all_moves_of_bishops_direction (board.c:468)
    ==19752== by 0x109493: store_all_moves_of_bishop (board.c:176)
    ==19752== by 0x109C31: return_all_moves (board.c:367)
    ==19752== by 0x10A64A: filter_all_legal_moves (board.c:580)
    ==19752== by 0x1099EE: return_all_legal_moves (board.c:316)
    ==19752== by 0x10AF6F: minimax (calculation.c:74)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752==
    ==19752== 18,456 (15,360 direct, 3,096 indirect) bytes in 24 blocks are definitely lost in loss record 150 of 158
    ==19752== at 0x4C31D2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==19752== by 0x109EEA: add_move_to_data (board.c:440)
    ==19752== by 0x10A073: generate_all_moves_of_bishops_direction (board.c:472)
    ==19752== by 0x109510: store_all_moves_of_bishop (board.c:186)
    ==19752== by 0x109C31: return_all_moves (board.c:367)
    ==19752== by 0x10A64A: filter_all_legal_moves (board.c:580)
    ==19752== by 0x1099EE: return_all_legal_moves (board.c:316)
    ==19752== by 0x10AF6F: minimax (calculation.c:74)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752==
    ==19752== 22,362 (18,240 direct, 4,122 indirect) bytes in 30 blocks are definitely lost in loss record 151 of 158
    ==19752== at 0x4C31D2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==19752== by 0x109EEA: add_move_to_data (board.c:440)
    ==19752== by 0x109FF9: generate_all_moves_of_bishops_direction (board.c:468)
    ==19752== by 0x109510: store_all_moves_of_bishop (board.c:186)
    ==19752== by 0x109C31: return_all_moves (board.c:367)
    ==19752== by 0x10A64A: filter_all_legal_moves (board.c:580)
    ==19752== by 0x1099EE: return_all_legal_moves (board.c:316)
    ==19752== by 0x10AF6F: minimax (calculation.c:74)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752==
    ==19752== 28,407 (22,080 direct, 6,327 indirect) bytes in 69 blocks are definitely lost in loss record 152 of 158
    ==19752== at 0x4C31D2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==19752== by 0x109EEA: add_move_to_data (board.c:440)
    ==19752== by 0x10A17B: add_move_if_unused_by_equal_color (board.c:497)
    ==19752== by 0x10930D: store_all_moves_of_rook (board.c:144)
    ==19752== by 0x10959A: store_all_moves_of_queen (board.c:202)
    ==19752== by 0x109CB5: return_all_moves (board.c:381)
    ==19752== by 0x10A64A: filter_all_legal_moves (board.c:580)
    ==19752== by 0x1099EE: return_all_legal_moves (board.c:316)
    ==19752== by 0x10AF6F: minimax (calculation.c:74)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752==
    ==19752== 30,809 (24,320 direct, 6,489 indirect) bytes in 76 blocks are definitely lost in loss record 153 of 158
    ==19752== at 0x4C31D2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==19752== by 0x109EEA: add_move_to_data (board.c:440)
    ==19752== by 0x10A17B: add_move_if_unused_by_equal_color (board.c:497)
    ==19752== by 0x10941A: store_all_moves_of_rook (board.c:162)
    ==19752== by 0x10959A: store_all_moves_of_queen (board.c:202)
    ==19752== by 0x109CB5: return_all_moves (board.c:381)
    ==19752== by 0x10A64A: filter_all_legal_moves (board.c:580)
    ==19752== by 0x1099EE: return_all_legal_moves (board.c:316)
    ==19752== by 0x10AF6F: minimax (calculation.c:74)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752==
    ==19752== 38,926 (29,440 direct, 9,486 indirect) bytes in 92 blocks are definitely lost in loss record 154 of 158
    ==19752== at 0x4C31D2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==19752== by 0x109EEA: add_move_to_data (board.c:440)
    ==19752== by 0x108F4D: store_all_moves_of_pawn (board.c:61)
    ==19752== by 0x109BAD: return_all_moves (board.c:353)
    ==19752== by 0x10A64A: filter_all_legal_moves (board.c:580)
    ==19752== by 0x1099EE: return_all_legal_moves (board.c:316)
    ==19752== by 0x10AF6F: minimax (calculation.c:74)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752== by 0x10B4BC: main (main.c:43)
    ==19752==
    ==19752== 49,708 (39,040 direct, 10,668 indirect) bytes in 122 blocks are definitely lost in loss record 155 of 158
    ==19752== at 0x4C31D2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==19752== by 0x109EEA: add_move_to_data (board.c:440)
    ==19752== by 0x109FF9: generate_all_moves_of_bishops_direction (board.c:468)
    ==19752== by 0x109493: store_all_moves_of_bishop (board.c:176)
    ==19752== by 0x1095C7: store_all_moves_of_queen (board.c:207)
    ==19752== by 0x109CB5: return_all_moves (board.c:381)
    ==19752== by 0x10A64A: filter_all_legal_moves (board.c:580)
    ==19752== by 0x1099EE: return_all_legal_moves (board.c:316)
    ==19752== by 0x10AF6F: minimax (calculation.c:74)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752==
    ==19752== 71,136 (53,760 direct, 17,376 indirect) bytes in 168 blocks are definitely lost in loss record 156 of 158
    ==19752== at 0x4C31D2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==19752== by 0x109EEA: add_move_to_data (board.c:440)
    ==19752== by 0x109047: store_all_moves_of_pawn (board.c:78)
    ==19752== by 0x109BAD: return_all_moves (board.c:353)
    ==19752== by 0x10A64A: filter_all_legal_moves (board.c:580)
    ==19752== by 0x1099EE: return_all_legal_moves (board.c:316)
    ==19752== by 0x10AF6F: minimax (calculation.c:74)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752== by 0x10B4BC: main (main.c:43)
    ==19752==
    ==19752== 91,304 (72,320 direct, 18,984 indirect) bytes in 189 blocks are definitely lost in loss record 157 of 158
    ==19752== at 0x4C31D2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==19752== by 0x109EEA: add_move_to_data (board.c:440)
    ==19752== by 0x10A17B: add_move_if_unused_by_equal_color (board.c:497)
    ==19752== by 0x109170: store_all_moves_of_knight (board.c:112)
    ==19752== by 0x109BEF: return_all_moves (board.c:360)
    ==19752== by 0x10A64A: filter_all_legal_moves (board.c:580)
    ==19752== by 0x1099EE: return_all_legal_moves (board.c:316)
    ==19752== by 0x10AF6F: minimax (calculation.c:74)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752==
    ==19752== 129,036 (97,920 direct, 31,116 indirect) bytes in 306 blocks are definitely lost in loss record 158 of 158
    ==19752== at 0x4C31D2F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==19752== by 0x109EEA: add_move_to_data (board.c:440)
    ==19752== by 0x10A17B: add_move_if_unused_by_equal_color (board.c:497)
    ==19752== by 0x10930D: store_all_moves_of_rook (board.c:144)
    ==19752== by 0x109C73: return_all_moves (board.c:374)
    ==19752== by 0x10A64A: filter_all_legal_moves (board.c:580)
    ==19752== by 0x1099EE: return_all_legal_moves (board.c:316)
    ==19752== by 0x10AF6F: minimax (calculation.c:74)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752== by 0x10B254: minimax (calculation.c:98)
    ==19752== by 0x10B090: minimax (calculation.c:83)
    ==19752==
    ==19752== LEAK SUMMARY:
    ==19752== definitely lost: 445,760 bytes in 1,255 blocks
    ==19752== indirectly lost: 127,089 bytes in 42,363 blocks
    ==19752== possibly lost: 0 bytes in 0 blocks
    ==19752== still reachable: 4,907 bytes in 164 blocks
    ==19752== suppressed: 0 bytes in 0 blocks
    ==19752== Reachable blocks (those to which a pointer was found) are not shown.
    ==19752== To see them, rerun with: --leak-check=full --show-leak-kinds=all
    ==19752==
    ==19752== ERROR SUMMARY: 26 errors from 26 contexts (suppressed: 0 from 0)
    ==19752== ERROR SUMMARY: 26 errors from 26 contexts (suppressed: 0 from 0)
    Aborted (core dumped)
    Last edited by SuchtyTV; 08-11-2019 at 04:28 PM.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Replies: 2
    Last Post: 09-28-2006, 01:06 PM
  2. memory leak
    By markucd in forum C++ Programming
    Replies: 14
    Last Post: 06-13-2006, 11:14 AM
  3. Is this a memory leak?
    By cboard_member in forum C++ Programming
    Replies: 9
    Last Post: 07-20-2005, 01:15 PM
  4. A memory leak (I think...)
    By Stevek in forum C++ Programming
    Replies: 7
    Last Post: 03-16-2003, 03:09 PM

Tags for this Thread