MtFmt 1.0.0
MtFmt is a format library on embed. system and wrote by pure C.
载入中...
搜索中...
未找到
宏定义 | 函数
mm_heap.h 文件参考

堆内存管理 更多...

#include "mm_cfg.h"
#include "mm_type.h"

浏览源代码.

宏定义

#define mstr_heap_init(mem, leng)
 
#define mstr_heap_alloc(s)   (mstr_heap_allocate_sym((s), 4))
 
#define mstr_heap_realloc(p, new_s, old_s)    mstr_heap_re_allocate_sym((p), (new_s), (old_s))
 
#define mstr_heap_free(m)
 

函数

 mstr_heap_init_sym (iptr_t heap_memory, usize_t heap_size)
 初始化堆分配器
 
 mstr_heap_allocate_sym (usize_t size, usize_t align)
 尝试从堆中分配size大小的内存
 
 mstr_heap_re_allocate_sym (void *old_ptr, usize_t new_size, usize_t old_size)
 尝试从堆中重新分配size大小的内存
 
 MSTR_EXPORT_API (void) mstr_heap_free_sym(void *memory)
 释放由 mstr_heap_allocate 分配的内存
 
 MSTR_EXPORT_API (usize_t) mstr_heap_get_free_size(void)
 取得当前的空闲内存大小
 
 mstr_heap_realloc_cpimp_sym (void *old_ptr, usize_t new_size, usize_t old_size)
 由memcpy实现realloc
 
 mstr_heap_get_allocate_count (usize_t *alloc_count, usize_t *free_count)
 取得分配器的统计数据
 

详细描述

堆内存管理

作者
向阳 (hinat.nosp@m.a.ho.nosp@m.shino.nosp@m.@fox.nosp@m.mail..nosp@m.com)
版本
1.0
日期
2023-04-22

宏定义说明

◆ mstr_heap_alloc

#define mstr_heap_alloc (   s)    (mstr_heap_allocate_sym((s), 4))

◆ mstr_heap_free

#define mstr_heap_free (   m)
值:
do { \
mstr_heap_free_sym(m); \
(m) = NULL; \
} while (0)

◆ mstr_heap_init

#define mstr_heap_init (   mem,
  leng 
)
值:
do { \
mstr_heap_init_sym((iptr_t)(mem), (usize_t)(leng)); \
} while (0)
intptr_t iptr_t
Definition mm_type.h:39
size_t usize_t
尺寸(无符号)
Definition mm_type.h:32

◆ mstr_heap_realloc

#define mstr_heap_realloc (   p,
  new_s,
  old_s 
)     mstr_heap_re_allocate_sym((p), (new_s), (old_s))

函数说明

◆ MSTR_EXPORT_API() [1/2]

MSTR_EXPORT_API ( usize_t  )

取得当前的空闲内存大小

取得自运行以来空闲内存最小的值

取得当前的空闲内存大小

◆ MSTR_EXPORT_API() [2/2]

MSTR_EXPORT_API ( void  )

释放由 mstr_heap_allocate 分配的内存

释放由 mstr_heap_allocate 分配的内存

释放一个字符串所占的内存

取得迭代器

翻转字符串, 不做任何其它处理

参数
[in,out]str需要翻转的字符串
[in,out]str需要翻转的字符串
注意
通常情况下不需要使用此函数, 此函数不会保证反转后的编码正确。它设计出来是为了给明确只有ASCII字符的字符串做翻转的, 在UTF-8编码下, 该函数可降低很多操作
参数
[out]it迭代器输出
[in]str原字符串
str字符串结构

释放由 mstr_heap_allocate 分配的内存

释放一个字符串所占的内存

取得迭代器

翻转字符串, 不做任何其它处理

翻转字符串

参数
[in,out]str需要清空的字符串
[in,out]str需要翻转的字符串
[in,out]str需要翻转的字符串
注意
通常情况下不需要使用此函数, 此函数不会保证反转后的编码正确。它设计出来是为了给明确只有ASCII字符的字符串做翻转的, 在UTF-8编码下, 该函数可降低很多操作
参数
[out]it迭代器输出
[in]str原字符串
str字符串结构

◆ mstr_heap_allocate_sym()

mstr_heap_allocate_sym ( usize_t  size,
usize_t  align 
)

尝试从堆中分配size大小的内存

返回
void*: 分配结果, 如果分配失败返回NULL

◆ mstr_heap_get_allocate_count()

mstr_heap_get_allocate_count ( usize_t alloc_count,
usize_t free_count 
)

取得分配器的统计数据

参数
[out]alloc_count分配次数
[out]free_count释放次数

◆ mstr_heap_init_sym()

mstr_heap_init_sym ( iptr_t  heap_memory,
usize_t  heap_size 
)

初始化堆分配器

参数
[in]heap_memory堆内存区
[in]heap_size堆内存区的大小

◆ mstr_heap_re_allocate_sym()

mstr_heap_re_allocate_sym ( void *  old_ptr,
usize_t  new_size,
usize_t  old_size 
)

尝试从堆中重新分配size大小的内存

参数
[in]old_ptr之前的ptr
[in]new_size需要分配的新大小
[in]old_size之前的ptr的大小
返回
void*: 分配结果, 如果分配失败返回NULL

◆ mstr_heap_realloc_cpimp_sym()

mstr_heap_realloc_cpimp_sym ( void *  old_ptr,
usize_t  new_size,
usize_t  old_size 
)

由memcpy实现realloc

返回
void*: 分配结果, 如果分配失败返回NULL