# tk_mem_t

# 概述

内存管理相关的宏和函数。

示例:

char* str = (char*)TKMEM_ALLOC(100);
...
TKMEM_FREE(str);
char* str = (char*)TKMEM_ALLOC(100);
...
str = (char*)TKMEM_REALLOC(str, 128);
...
TKMEM_FREE(str);

# 函数

函数名称 说明
tk_mem_dump 显示内存信息。
tk_mem_init 初始化内存。
tk_mem_init_ex 初始化内存,支持多块不连续的内存。
tk_mem_init_stage2 初始化互斥和oom。
tk_mem_is_valid_addr 检查给定的地址是否是一个有效的heap地址。
tk_mem_set_on_out_of_memory 设置内存耗尽时的处理函数。
TKMEM_ALLOC 分配一块内存。
TKMEM_CALLOC 分配一块内存,并将内容清零。
TKMEM_FREE 释放内存。
TKMEM_REALLOC 重新分配一块内存,如果原来的内存块大于等于需要的空间,直接返回原来的内存块。

# tk_mem_dump 函数

  • 函数功能:

显示内存信息。

  • 函数原型:
void tk_mem_dump ();
  • 参数说明:
参数 类型 说明
返回值 void 返回void。

# tk_mem_init 函数

  • 函数功能:

初始化内存。

  • 函数原型:
ret_t tk_mem_init (void* buffer, uint32_t size);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。
buffer void* 内存地址。
size uint32_t 内存长度。

# tk_mem_init_ex 函数

  • 函数功能:

初始化内存,支持多块不连续的内存。

最后一个参数必须为NULL。

示例:

tk_mem_init_ex(mem1, sizeof(mem1), mem2, sizeof(mem2), mem3, sizeof(mem3), NULL);
  • 函数原型:
ret_t tk_mem_init_ex (void* buffer, uint32_t size);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。
buffer void* 内存地址。
size uint32_t 内存长度。

# tk_mem_init_stage2 函数

  • 函数功能:

初始化互斥和oom。

  • 函数原型:
ret_t tk_mem_init_stage2 ();
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。

# tk_mem_is_valid_addr 函数

  • 函数功能:

检查给定的地址是否是一个有效的heap地址。

用于辅助发现内存问题。

  • 函数原型:
bool_t tk_mem_is_valid_addr (void* addr);
  • 参数说明:
参数 类型 说明
返回值 bool_t 返回FALSE一定是无效地址,返回TRUE在PC则不太确定。
addr void* 内存地址。

# tk_mem_set_on_out_of_memory 函数

  • 函数功能:

设置内存耗尽时的处理函数。

  • 函数原型:
ret_t tk_mem_set_on_out_of_memory (tk_mem_on_out_of_memory_t on_out_of_memory, void* ctx);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。
on_out_of_memory tk_mem_on_out_of_memory_t 回调函数。
ctx void* 回调函数的上下文。

# TKMEM_ALLOC 宏

  • 函数功能:

分配一块内存。

  • 函数原型:
void* TKMEM_ALLOC (uint32_t size);
  • 参数说明:
参数 类型 说明
返回值 void* 成功返回内存块首地址,失败返回NULL。
size uint32_t 内存大小。

# TKMEM_CALLOC 宏

  • 函数功能:

分配一块内存,并将内容清零。

  • 函数原型:
void* TKMEM_CALLOC (uint32_t nmemb, uint32_t size);
  • 参数说明:
参数 类型 说明
返回值 void* 成功返回内存块首地址,失败返回NULL。
nmemb uint32_t 内存块数量。
size uint32_t 每一块的大小。

# TKMEM_FREE 宏

  • 函数功能:

释放内存。

  • 函数原型:
void TKMEM_FREE (void* p);
  • 参数说明:
参数 类型 说明
返回值 void 无。
p void* 内存地址。

# TKMEM_REALLOC 宏

  • 函数功能:

重新分配一块内存,如果原来的内存块大于等于需要的空间,直接返回原来的内存块。

  • 函数原型:
void* TKMEM_REALLOC (void* p, uint32_t size);
  • 参数说明:
参数 类型 说明
返回值 void* 成功返回内存块首地址,失败返回NULL。
p void* 原来的内存地址。
size uint32_t 每一块的大小。