基本内存分配接口。更多...
函数 | |
void | mi_free (void *p) |
释放之前分配的内存。 | |
void * | mi_malloc (size_t size) |
分配 size 字节。 | |
void * | mi_zalloc (size_t size) |
分配零初始化的 size 字节。 | |
void * | mi_calloc (size_t count, size_t size) |
分配 count 个元素,每个元素 size 字节,并进行零初始化。 | |
void * | mi_realloc (void *p, size_t newsize) |
重新分配内存至 newsize 字节。 | |
void * | mi_recalloc (void *p, size_t count, size_t size) |
重新分配内存至 count 个元素,每个元素 size 字节,额外内存零初始化。 | |
void * | mi_expand (void *p, size_t newsize) |
尝试就地重新分配内存至 newsize 字节。 | |
void * | mi_mallocn (size_t count, size_t size) |
分配 count 个元素,每个元素 size 字节。 | |
void * | mi_reallocn (void *p, size_t count, size_t size) |
重新分配内存至 count 个元素,每个元素 size 字节。 | |
void * | mi_reallocf (void *p, size_t newsize) |
重新分配内存至 newsize 字节。 | |
char * | mi_strdup (const char *s) |
分配并复制字符串。 | |
char * | mi_strndup (const char *s, size_t n) |
分配并复制字符串,最多 n 字节。 | |
char * | mi_realpath (const char *fname, char *resolved_name) |
解析文件路径名。 | |
基本内存分配接口。
void * mi_calloc | ( | size_t | 计数, |
size_t | size ) |
分配 count 个元素,每个元素 size 字节,并进行零初始化。
计数 | 元素数量。 |
size | 每个元素的大小。 |
count*size
溢出则为 NULL。如果 size 或 count 为 0 调用,返回一个唯一的指针。
void * mi_expand | ( | void * | p, |
size_t | newsize ) |
尝试就地重新分配内存至 newsize 字节。
p | 指向先前分配的内存的指针(或 NULL)。 |
newsize | 所需的新大小(以字节为单位)。 |
void mi_free | ( | void * | p | ) |
释放之前分配的内存。
指针 p
必须是之前分配的(或为 NULL)。
p | 要释放的指针,或 NULL。 |
void * mi_malloc | ( | size_t | size | ) |
分配 size 字节。
size | 要分配的字节数。 |
void * mi_mallocn | ( | size_t | 计数, |
size_t | size ) |
分配 count 个元素,每个元素 size 字节。
计数 | 元素数量。 |
size | 每个元素的大小。 |
如果没有溢出,其行为与 mi_malloc(count*size)
完全相同。
void * mi_realloc | ( | void * | p, |
size_t | newsize ) |
重新分配内存至 newsize 字节。
p | 指向先前分配的内存的指针(或 NULL)。 |
newsize | 所需的新大小(以字节为单位)。 |
void * mi_reallocf | ( | void * | p, |
size_t | newsize ) |
重新分配内存至 newsize 字节。
p | 指向先前分配的内存的指针(或 NULL)。 |
newsize | 所需的新大小(以字节为单位)。 |
与 mi_realloc() 不同,如果返回 NULL,则原始指针 p 会被释放(如果它本身不是 NULL)。否则,原始指针要么被释放,要么作为重新分配的结果返回(如果它符合新大小并就地分配)。如果指针 p 为 NULL,其行为与 mi_malloc(newsize) 相同。如果 newsize 大于为 p 分配的原始 size,则 size 之后的字节未初始化。
void * mi_reallocn | ( | void * | p, |
size_t | 计数, | ||
size_t | size ) |
重新分配内存至 count 个元素,每个元素 size 字节。
p | 指向先前分配的内存块的指针(或 NULL)。 |
计数 | 元素数量。 |
size | 每个元素的大小。 |
如果没有溢出,其行为与 mi_realloc(p,count*size)
完全相同。
char * mi_realpath | ( | const char * | fname, |
char * | resolved_name ) |
解析文件路径名。
fname | 文件名。 |
resolved_name | 应为 NULL(但也可以指向至少 PATH_MAX 字节的缓冲区)。 |
如果 resolved_name 为 NULL,则返回的结果应使用 mi_free() 释放。
替换标准 realpath(),以便返回结果(如果 resolved_name 为 NULL)可以使用 mi_free() 释放。
void * mi_recalloc | ( | void * | p, |
size_t | 计数, | ||
size_t | size ) |
重新分配内存至 count 个元素,每个元素 size 字节,额外内存零初始化。
p | 指向先前分配的内存块的指针(或 NULL)。 |
计数 | 元素数量。 |
size | 每个元素的大小。 |
如果没有溢出,其行为与 mi_rezalloc(p,count*size)
完全相同。
char * mi_strdup | ( | const char * | s | ) |
char * mi_strndup | ( | const char * | s, |
size_t | n ) |
void * mi_zalloc | ( | size_t | size | ) |
分配零初始化的 size
字节。
size | 大小(以字节为单位)。 |