igraph 参考手册

用于使用 igraph C 库

搜索手册

第 6 章:内存(取消)分配

1.  关于分配函数

一些 igraph 函数返回一个指针向量 (igraph_vector_ptr_t),其中包含指向其他 igraph 或其他数据类型的指针。这些数据类型是动态分配的,当用户不再需要它们时必须手动取消分配。igraph_vector_ptr_t 具有取消分配其中包含的指针的函数,但在这种情况下,必须确保这些指针是由与 igraph 使用的取消分配器函数相对应的函数分配的。

为此,igraph 导出了内部使用的内存分配函数,以便库的用户可以确保在指针在用户编写的代码和 igraph 库的代码之间移动时使用正确的函数。

此外,igraph 使用的内存分配器函数可以解决经典 malloc()、realloc() 和 calloc() 实现的怪癖,在这些实现中,分配零字节的行为是未定义的。igraph 分配器函数将始终至少分配一个字节。

2. 可用的分配函数

2.1. igraph_malloc — 分配可以被 igraph 函数安全取消分配的内存。

void *igraph_malloc(size_t size);

此函数的行为类似于 malloc(),但它确保即使调用者请求零字节,也至少分配一个字节。

参数: 

大小:

要分配的字节数。零被视为一个字节。

返回值: 

指向已分配内存块的指针;如果分配失败,则为 NULL

另请参阅: 

2.2. igraph_calloc — 分配可以被 igraph 函数安全取消分配的内存。

void *igraph_calloc(size_t count, size_t size);

此函数的行为类似于 calloc(),但它确保即使调用者请求零字节,也至少分配一个字节。

参数: 

计数:

要分配的项目数。

大小:

要分配的单个项目的大小。

返回值: 

指向已分配内存块的指针;如果分配失败,则为 NULL

另请参阅: 

2.3. igraph_realloc — 重新分配可以被 igraph 函数安全取消分配的内存。

void *igraph_realloc(void *ptr, size_t size);

此函数的行为类似于 realloc(),但它确保即使调用者请求零字节,也至少分配一个字节。

参数: 

ptr:

要重新分配的指针。

大小:

要分配的字节数。

返回值: 

指向已分配内存块的指针;如果分配失败,则为 NULL

另请参阅: 

2.4. igraph_free — 取消分配由 igraph 函数分配的内存。

void igraph_free(void *ptr);

此函数公开了 igraph 内部使用的 free() 函数。

参数: 

ptr:

指向要取消分配的内存块的指针。

时间复杂度:平台相关,理想情况下应该是 O(1)。

另请参阅: