我是新手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)
在底部使用,是我缺少的东西还是我做错了什么?
你的free()
陈述是在你之后return
,你认为它执行了吗?您可以尝试仔细格式化代码,然后可以避免这种错误.