c - 程序显示内存泄漏,即使在使用 free() 之后

标签 c malloc

<分区>

我是 malloc() 的新手,并且一直在阅读我的书籍和一些关于它的教程。现在我已经写好了我的作业,要求你没有任何内存泄漏。

这是我在 main 中编写的一段代码:

#define _CRTDBG_MAP_ALLOC
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <crtdbg.h>
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),这是我遗漏了什么还是我做错了什么?

最佳答案

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

关于c - 程序显示内存泄漏,即使在使用 free() 之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34581769/

相关文章:

c - 声明还是定义?

c++ - 检查任何正在运行的二进制文件是 32 位还是 64 位

使用 gcc 编译的代码不会在 visual studio 2012 中编译

c - 是什么导致我的数组地址在传递给函数时被损坏(更改)?

c - Windows触发了一个断点——C语言

C - 在内存被释放()之后访问数据?

c - NTRIPClient 更新 nmea

C++ New 与 Malloc 用于对象的动态内存数组

c - 如何动态分配包含多个数组的结构体?

c - 分配内存并在c中保存字符串