Program shows memory leak, even after using free()
<p>I am new to <code>malloc()</code> and been reading my books and some tutorials about it. Now that I have written my assignment, it's required that you do not have any memory leaks.</p>

<p>This is a piece of my code how I have written it in main:</p>

<pre><code>#define _CRTDBG_MAP_ALLOC
#define _CRT_SECURE_NO_WARNINGS
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;time.h&gt;
#include &lt;crtdbg.h&gt;
int main()
{   
    _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
    srand((unsigned)time(NULL)); //Kallas för randomisera ett nummer tidsmässigt
    struct CardDeck * deck; //Dynamiskt allokerad array
    int index;
    int suit_index;
    /*int i;  kan användas om man vill loopa kortleken*/
    deck = (struct CardDeck *)malloc(sizeof(struct CardDeck)); //Bör bara användas en gång med tanke på att vi bara har en pekare under vår struct i cardeck
    deck-&gt;last_Index = 0; //Pekar på senaste indexen för att se så att kortleken är full. 
    for (suit_index = 0; suit_index &lt; NR_OF_SUITS; suit_index++)    //Loopar 4 (avser färgerna)
        for (index = 0; index &lt; COLOR_SIZE; index++) //Loopar 13 gånger för varje värde i kortleken
        {
            deck-&gt;cards[suit_index*COLOR_SIZE + index].suit = suit_index;
            deck-&gt;cards[suit_index*COLOR_SIZE + index].value = index;
        }
    /*for (i = 0; i &lt; 52; i++) {
    printCards(deck);
    }  Om man vill loopa igenom hela kortleken (sorterad) så finns den möjlig*/

    shuffleCards(deck-&gt;cards); 
    play(deck);
    system("pause");
    return 0;
    free(deck);
}
</code></pre>

<p>As you see, I used <code>free(deck)</code> at the bottom, is it something that I am missing or what am I doing wrong?</p>