用于使用 igraph C 库
一些 igraph 函数返回一个指针向量 (igraph_vector_ptr_t),其中包含指向其他 igraph 或其他数据类型的指针。这些数据类型是动态分配的,当用户不再需要它们时必须手动取消分配。igraph_vector_ptr_t 具有取消分配其中包含的指针的函数,但在这种情况下,必须确保这些指针是由与 igraph 使用的取消分配器函数相对应的函数分配的。
为此,igraph 导出了内部使用的内存分配函数,以便库的用户可以确保在指针在用户编写的代码和 igraph 库的代码之间移动时使用正确的函数。
此外,igraph 使用的内存分配器函数可以解决经典 malloc
()、realloc
() 和 calloc
() 实现的怪癖,在这些实现中,分配零字节的行为是未定义的。igraph 分配器函数将始终至少分配一个字节。
void *igraph_malloc(size_t size);
此函数的行为类似于 malloc
(),但它确保即使调用者请求零字节,也至少分配一个字节。
参数:
|
要分配的字节数。零被视为一个字节。 |
返回值:
指向已分配内存块的指针;如果分配失败,则为 |
另请参阅:
void *igraph_calloc(size_t count, size_t size);
此函数的行为类似于 calloc
(),但它确保即使调用者请求零字节,也至少分配一个字节。
参数:
|
要分配的项目数。 |
|
要分配的单个项目的大小。 |
返回值:
指向已分配内存块的指针;如果分配失败,则为 |
另请参阅:
void *igraph_realloc(void *ptr, size_t size);
此函数的行为类似于 realloc
(),但它确保即使调用者请求零字节,也至少分配一个字节。
参数:
|
要重新分配的指针。 |
|
要分配的字节数。 |
返回值:
指向已分配内存块的指针;如果分配失败,则为 |
另请参阅:
← 第 5 章:错误处理 | 第 7 章:数据结构库:向量、矩阵、其他数据类型 → |