chore: 更新 .gitignore 文件

- 添加 docs 文件夹到忽略列表,以忽略 Doxygen 生成的文件
- 保持原有的忽略规则不变
This commit is contained in:
ZZY
2025-04-05 23:11:39 +08:00
parent c800b48ca2
commit 8d97fe896c
32 changed files with 3939 additions and 187 deletions

View File

@@ -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__