当前位置:  开发笔记 > 编程语言 > 正文

程序显示内存泄漏,即使使用free()

如何解决《程序显示内存泄漏,即使使用free()》经验,为你挑选了1个好方法。

我是新手malloc(),一直在阅读我的书籍和一些关于它的教程.既然我已经编写了我的作业,那么就要求你没有任何内存泄漏.

这是我的代码的一部分我是如何用main编写的:

#define _CRTDBG_MAP_ALLOC
#define _CRT_SECURE_NO_WARNINGS
#include 
#include 
#include 
#include 
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->last_Index = 0; //Pekar på senaste indexen för att se så att kortleken är full. 
    for (suit_index = 0; suit_index < NR_OF_SUITS; suit_index++)    //Loopar 4 (avser färgerna)
        for (index = 0; index < COLOR_SIZE; index++) //Loopar 13 gånger för varje värde i kortleken
        {
            deck->cards[suit_index*COLOR_SIZE + index].suit = suit_index;
            deck->cards[suit_index*COLOR_SIZE + index].value = index;
        }
    /*for (i = 0; i < 52; i++) {
    printCards(deck);
    }  Om man vill loopa igenom hela kortleken (sorterad) så finns den möjlig*/

    shuffleCards(deck->cards); 
    play(deck);
    system("pause");
    return 0;
    free(deck);
}

如你所见,我free(deck)在底部使用,是我缺少的东西还是我做错了什么?



1> Iharob Al As..:

你的free()陈述是在你之后return,你认为它执行了吗?您可以尝试仔细格式化代码,然后可以避免这种错误.

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有