<分区>
我是 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)
,这是我遗漏了什么还是我做错了什么?