数组

头文件

#include "mln_array.h"

模块名

array

函数/宏

mln_array_init

int mln_array_init(mln_array_t *arr, array_free free, mln_size_t size, mln_size_t nalloc);

typedef void (*array_free)(void *);

描述:对一个给定的数组arr进行初始化,参数含义如下:

  • arr 数组对象
  • free是用于对数组元素做资源释放的函数指针
  • size是单个数组元素的字节大小
  • nalloc是初始数组长度,后续数组扩张则是针对当前数组分配元素的两倍进行扩张

返回值:成功则返回0,否则返回-1

mln_array_pool_init

int mln_array_pool_init(mln_array_t *arr, array_free free, mln_size_t size, mln_size_t nalloc,
                        void *pool, array_pool_alloc_handler pool_alloc, array_pool_free_handler pool_free);

typedef void *(*array_pool_alloc_handler)(void *, mln_size_t);
typedef void (*array_pool_free_handler)(void *);
typedef void (*array_free)(void *);

描述:对一个给定的数组arr使用内存池内存来初始化,参数含义如下:

  • arr 数组对象
  • free是用于对数组元素做资源释放的函数指针
  • size是单个数组元素的字节大小
  • nalloc是初始数组长度,后续数组扩张则是针对当前数组分配元素的两倍进行扩张
  • pool是自定义内存池结构指针
  • pool_alloc是自定义内存池分配函数指针
  • pool_free是自定义内存池释放函数指针

返回值:成功则返回0,否则返回-1

mln_array_new

mln_array_t *mln_array_new(array_free free, mln_size_t size, mln_size_t nalloc);

描述:根据给定参数创建和初始化数组。

返回值:成功则返回数组指针,否则返回NULL

mln_array_pool_new

mln_array_t *mln_array_pool_new(array_free free, mln_size_t size, mln_size_t nalloc, void *pool,
                                array_pool_alloc_handler pool_alloc, array_pool_free_handler pool_free);

描述:根据给定参数使用内存池内存来创建和初始化数组。

返回值:成功则返回数组指针,否则返回NULL

mln_array_destroy

void mln_array_destroy(mln_array_t *arr);

描述:释放指定数组arr的所有元素内存。

返回值:无

mln_array_free

void mln_array_free(mln_array_t *arr);

描述:释放指定数组arr的所有元素内存,并释放数组本身内存。

返回值:无

mln_array_reset

void mln_array_reset(mln_array_t *arr);

描述:将arr中的元素进行释放,并将数组长度归0,但不释放数组结构。

返回值:无

mln_array_push

void *mln_array_push(mln_array_t *arr);

描述:向数组中追加一个元素,并将元素内存地址返回。

返回值:成功则返回元素地址,否则返回NULL

mln_array_pushn

void *mln_array_pushn(mln_array_t *arr, mln_size_t n);

描述:向数组中追加n个元素,并将这些元素的内存首地址返回。

返回值:成功则返回元素地址,否则返回NULL

mln_array_pop

void *mln_array_pop(mln_array_t *arr);

描述:将数组的最后一个元素移除并释放。

返回值:无

mln_array_elts

mln_array_elts(arr);

描述:获取数组所有元素的起始地址。

返回值:元素起始地址

mln_array_nelts

mln_array_nelts(arr);

描述:获取数组的元素个数。

返回值:元素个数

示例

#include <stdio.h>
#include "mln_array.h"

typedef struct {
    int i1;
    int i2;
} test_t;

int main(void)
{
    test_t *t;
    mln_size_t i, n;
    mln_array_t arr;

    mln_array_init(&arr, NULL, sizeof(test_t), 1);

    t = mln_array_push(&arr);
    if (t == NULL)
        return -1;
    t->i1 = 0;

    t = mln_array_pushn(&arr, 9);
    for (i = 0; i < 9; ++i) {
        t[i].i1 = i + 1;
    }

    for (t = mln_array_elts(&arr), i = 0; i < mln_array_nelts(&arr); ++i) {
        printf("%d\n", t[i].i1);
    }

    mln_array_destroy(&arr);

    return 0;
}

results matching ""

    No results matching ""