欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

《C语言》单链表——内存管理

程序员文章站 2022-06-04 11:01:38
...

《C语言》单链表——内存管理

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
相关标签: 内存管理