chore: 更新 .gitignore 文件
- 添加 docs 文件夹到忽略列表,以忽略 Doxygen 生成的文件 - 保持原有的忽略规则不变
This commit is contained in:
@@ -1,36 +1,132 @@
|
||||
/**
|
||||
* @file rt_alloc.h
|
||||
* @brief 内存分配器接口
|
||||
*
|
||||
* 提供三种内存分配器实现:简单分配器、固定大小分配器和长块分配器
|
||||
*/
|
||||
|
||||
#ifndef __SMCC_RT_ALLOC_H__
|
||||
#define __SMCC_RT_ALLOC_H__
|
||||
|
||||
#include "std/rt_api_def.h"
|
||||
// Simple or Static Allocator
|
||||
|
||||
/** @defgroup simple_allocator 简单分配器 */
|
||||
|
||||
/**
|
||||
* @brief 分配指定大小的内存块
|
||||
* @param size 请求分配的内存大小(字节)
|
||||
* @return 成功返回内存指针,失败返回NULL
|
||||
*/
|
||||
void* salloc_alloc(int size);
|
||||
|
||||
/**
|
||||
* @brief 重新分配内存块
|
||||
* @param ptr 原内存指针
|
||||
* @param size 新内存大小(字节)
|
||||
* @return 成功返回新内存指针,失败返回NULL
|
||||
*/
|
||||
void* salloc_realloc(void* ptr, int size);
|
||||
|
||||
/**
|
||||
* @brief 释放内存块
|
||||
* @param ptr 要释放的内存指针
|
||||
*/
|
||||
void salloc_free(void* ptr);
|
||||
|
||||
/** @defgroup fixed_allocator 固定大小分配器 */
|
||||
|
||||
/**
|
||||
* @struct fixed_alloc_t
|
||||
* @brief 固定大小内存分配器上下文
|
||||
*/
|
||||
typedef struct fixed_alloc {
|
||||
/** @brief 内存页链表头指针 */
|
||||
void* page_list;
|
||||
/** @brief 空闲块链表头指针 */
|
||||
void* free_list;
|
||||
/** @brief 每个内存块的固定大小 */
|
||||
int block_size;
|
||||
/** @brief 每页包含的块数量 */
|
||||
int blocks_per_page;
|
||||
} fixed_alloc_t;
|
||||
|
||||
/**
|
||||
* @brief 初始化固定大小分配器
|
||||
* @param fa 分配器上下文指针
|
||||
* @param fixed_size 每个内存块的固定大小
|
||||
* @param init_size 初始预分配块数量
|
||||
*/
|
||||
void falloc_init(fixed_alloc_t* fa, int fixed_size, int init_size);
|
||||
|
||||
/**
|
||||
* @brief 分配固定大小内存块
|
||||
* @param fa 分配器上下文指针
|
||||
* @return 成功返回内存指针,失败返回NULL
|
||||
*/
|
||||
void* falloc_alloc(fixed_alloc_t* fa);
|
||||
|
||||
/**
|
||||
* @brief 释放内存块
|
||||
* @param fa 分配器上下文指针
|
||||
* @param ptr 要释放的内存指针
|
||||
*/
|
||||
void falloc_free(fixed_alloc_t* fa, void* ptr);
|
||||
|
||||
/**
|
||||
* @brief 销毁分配器并释放所有内存页
|
||||
* @param fa 分配器上下文指针
|
||||
*/
|
||||
void falloc_destroy(fixed_alloc_t* fa);
|
||||
|
||||
/** @defgroup long_allocator 长块分配器 */
|
||||
|
||||
/**
|
||||
* @struct long_block_t
|
||||
* @brief 长块内存块头结构
|
||||
*/
|
||||
typedef struct long_block {
|
||||
/** @brief 指向下一个内存块的指针 */
|
||||
struct long_block* next;
|
||||
/** @brief 当前块使用状态标志 */
|
||||
int used;
|
||||
} long_block_t;
|
||||
|
||||
/**
|
||||
* @struct long_alloc_t
|
||||
* @brief 长块分配器上下文
|
||||
*/
|
||||
typedef struct long_alloc {
|
||||
/** @brief 当前内存块指针 */
|
||||
long_block_t* current;
|
||||
/** @brief 内存块的标准大小 */
|
||||
int block_size;
|
||||
} long_alloc_t;
|
||||
|
||||
/**
|
||||
* @brief 初始化长块分配器
|
||||
* @param la 分配器上下文指针
|
||||
*/
|
||||
void lalloc_init(long_alloc_t* la);
|
||||
|
||||
/**
|
||||
* @brief 分配指定大小的内存块
|
||||
* @param la 分配器上下文指针
|
||||
* @param size 请求分配的内存大小
|
||||
* @return 成功返回内存指针,失败返回NULL
|
||||
*/
|
||||
void* lalloc_alloc(long_alloc_t* la, int size);
|
||||
|
||||
/**
|
||||
* @brief 标记释放内存块(实际在块耗尽时统一释放)
|
||||
* @param la 分配器上下文指针
|
||||
* @param ptr 要释放的内存指针
|
||||
*/
|
||||
void lalloc_free(long_alloc_t* la, void* ptr);
|
||||
|
||||
/**
|
||||
* @brief 销毁分配器并释放所有内存块
|
||||
* @param la 分配器上下文指针
|
||||
*/
|
||||
void lalloc_destroy(long_alloc_t* la);
|
||||
|
||||
#endif
|
||||
#endif // __SMCC_RT_ALLOC_H__
|
||||
|
||||
Reference in New Issue
Block a user