mi-malloc 1.8/2.1
 
正在加载...
正在搜索...
无匹配项
基本内存分配

基本内存分配接口。更多...

函数

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)
 解析文件路径名。
 

详细描述

基本内存分配接口。

函数文档

◆ mi_calloc()

void * mi_calloc ( size_t 计数,
size_t size )

分配 count 个元素,每个元素 size 字节,并进行零初始化。

参数
计数元素数量。
size每个元素的大小。
返回
指向分配的 size*count 字节内存的指针,如果内存不足或 count*size 溢出则为 NULL

如果 sizecount 为 0 调用,返回一个唯一的指针。

另请参见
mi_zalloc()

◆ mi_expand()

void * mi_expand ( void * p,
size_t newsize )

尝试就地重新分配内存至 newsize 字节。

参数
p指向先前分配的内存的指针(或 NULL)。
newsize所需的新大小(以字节为单位)。
返回
指向重新分配的 newsize 字节内存的指针(始终等于 p),如果内存不足或无法就地扩展内存,则为 NULL。如果返回 NULL,则指针 p 不会被释放。否则,由于原始指针符合新大小并就地分配,因此将其作为重新分配的结果返回。如果 newsize 大于为 p 分配的原始 size,则 size 之后的字节未初始化。

◆ mi_free()

void mi_free ( void * p)

释放之前分配的内存。

指针 p 必须是之前分配的(或为 NULL)。

参数
p要释放的指针,或 NULL

◆ mi_malloc()

void * mi_malloc ( size_t size)

分配 size 字节。

参数
size要分配的字节数。
返回
指向分配的内存的指针,如果内存不足则为 NULL。如果 size 为 0 调用,返回一个唯一的指针。

◆ mi_mallocn()

void * mi_mallocn ( size_t 计数,
size_t size )

分配 count 个元素,每个元素 size 字节。

参数
计数元素数量。
size每个元素的大小。
返回
指向 count * size 字节内存块的指针,如果内存不足或 count * size 溢出则为 NULL

如果没有溢出,其行为与 mi_malloc(count*size) 完全相同。

另请参见
mi_calloc()
mi_zallocn()

◆ mi_realloc()

void * mi_realloc ( void * p,
size_t newsize )

重新分配内存至 newsize 字节。

参数
p指向先前分配的内存的指针(或 NULL)。
newsize所需的新大小(以字节为单位)。
返回
指向重新分配的 newsize 字节内存的指针,如果内存不足则为 NULL。如果返回 NULL,则指针 p 不会被释放。否则,原始指针要么被释放,要么作为重新分配的结果返回(如果它符合新大小并就地分配)。如果指针 pNULL,其行为与 mi_malloc(newsize) 相同。如果 newsize 大于为 p 分配的原始 size,则 size 之后的字节未初始化。

◆ mi_reallocf()

void * mi_reallocf ( void * p,
size_t newsize )

重新分配内存至 newsize 字节。

参数
p指向先前分配的内存的指针(或 NULL)。
newsize所需的新大小(以字节为单位)。
返回
指向重新分配的 newsize 字节内存的指针,如果内存不足则为 NULL

mi_realloc() 不同,如果返回 NULL,则原始指针 p 会被释放(如果它本身不是 NULL)。否则,原始指针要么被释放,要么作为重新分配的结果返回(如果它符合新大小并就地分配)。如果指针 pNULL,其行为与 mi_malloc(newsize) 相同。如果 newsize 大于为 p 分配的原始 size,则 size 之后的字节未初始化。

另请参见
reallocf (在 BSD 上)

◆ mi_reallocn()

void * mi_reallocn ( void * p,
size_t 计数,
size_t size )

重新分配内存至 count 个元素,每个元素 size 字节。

参数
p指向先前分配的内存块的指针(或 NULL)。
计数元素数量。
size每个元素的大小。
返回
指向重新分配的 count * size 字节内存块的指针,如果内存不足或 count * size 溢出则为 NULL

如果没有溢出,其行为与 mi_realloc(p,count*size) 完全相同。

另请参见
reallocarray() (在 BSD 上)

◆ mi_realpath()

char * mi_realpath ( const char * fname,
char * resolved_name )

解析文件路径名。

参数
fname文件名。
resolved_name应为 NULL(但也可以指向至少 PATH_MAX 字节的缓冲区)。
返回
如果成功,则为指向已解析的绝对文件名的指针,失败则为 NULL(并设置 errno 为错误代码)。

如果 resolved_nameNULL,则返回的结果应使用 mi_free() 释放。

替换标准 realpath(),以便返回结果(如果 resolved_nameNULL)可以使用 mi_free() 释放。

◆ mi_recalloc()

void * mi_recalloc ( void * p,
size_t 计数,
size_t size )

重新分配内存至 count 个元素,每个元素 size 字节,额外内存零初始化。

参数
p指向先前分配的内存块的指针(或 NULL)。
计数元素数量。
size每个元素的大小。
返回
指向重新分配的 count * size 字节内存块的指针,如果内存不足或 count * size 溢出则为 NULL

如果没有溢出,其行为与 mi_rezalloc(p,count*size) 完全相同。

另请参见
mi_reallocn()
recallocarray() (在 BSD 上)。

◆ mi_strdup()

char * mi_strdup ( const char * s)

分配并复制字符串。

参数
s要复制的字符串(或 NULL)。
返回
指向已初始化为字符串 s 的新分配内存的指针,如果内存不足或 sNULL 则为 NULL

替换标准 strdup(),以便返回结果可以使用 mi_free() 释放。

◆ mi_strndup()

char * mi_strndup ( const char * s,
size_t n )

分配并复制字符串,最多 n 字节。

参数
s要复制的字符串(或 NULL)。
n要复制的最大字节数(不包括终止零)。
返回
指向新分配内存的指针,该内存已初始化为字符串 s,最多 n 字节(并始终以零终止),如果内存不足或 sNULL 则为 NULL

替换标准 strndup(),以便返回结果可以使用 mi_free() 释放。

◆ mi_zalloc()

void * mi_zalloc ( size_t size)

分配零初始化的 size 字节。

参数
size大小(以字节为单位)。
返回
指向新分配的零初始化内存的指针,如果内存不足则为 NULL