Main.c
#include "MemList.h" #define malloc MyMalloc void main() { void* p1= malloc(100); void* p2 = malloc(1002); void* p3 = malloc(5002); Show(Memory); #if 0 MyFree(p1); MyFree(p2); MyFree(p3); #endif ClearMemory(&Memory); Show(Memory); system("pause"); }
MemList.h
#pragma once #ifdef __cplusplus extern "C" { #endif #include <stdio.h> #include <stdlib.h> typedef struct MemInfo { void* P_MemAddr; unsigned int MemSize; }MemInfo; typedef struct MemList { MemInfo* Mem; struct MemList* P_Next; }MemList; MemList* Memory; //打印链表 void Show(MemList* P_Head); //初始化节点 void InitNode(MemList* P_Head); //查找节点 MemList* FindNode(MemList* P_Head, void* P_Memaddr); //添加节点(内存) void AddMem(MemList** PP_Head, MemInfo* P_Mem); //删除节点 void DeleteNode(MemList** PP_Head, MemList* Node); //修改节点 void ChangeNode(MemList** PP_Head, void* P_Memaddr, MemInfo* P_Mem); //清空内存 void ClearMemory(MemList** PP_Head); void* MyMalloc(size_t Size); void* ReCalloc(void* P_Memaddr, size_t NewSize); void MyFree(void* P_Memaddr); #ifdef __cplusplus } #endif
MemList.h
#pragma once #ifdef __cplusplus extern "C" { #endif #include <stdio.h> #include <stdlib.h> typedef struct MemInfo { void* P_MemAddr; unsigned int MemSize; }MemInfo; typedef struct MemList { MemInfo* Mem; struct MemList* P_Next; }MemList; MemList* Memory; //打印链表 void Show(MemList* P_Head); //初始化节点 void InitNode(MemList* P_Head); //查找节点 MemList* FindNode(MemList* P_Head, void* P_Memaddr); //添加节点(内存) void AddMem(MemList** PP_Head, MemInfo* P_Mem); //删除节点 void DeleteNode(MemList** PP_Head, MemList* Node); //修改节点 void ChangeNode(MemList** PP_Head, void* P_Memaddr, MemInfo* P_Mem); //清空内存 void ClearMemory(MemList** PP_Head); void* MyMalloc(size_t Size); void* ReCalloc(void* P_Memaddr, size_t NewSize); void MyFree(void* P_Memaddr); #ifdef __cplusplus } #endif
文章来源: 单链表---内存管理