Melon库运用——数组篇

头文件片段

// mln_array.h

struct mln_array_attr
{
    void                     *pool;       // 自定义内存池结构指针
    array_pool_alloc_handler  pool_alloc; // 自定义内存池分配函数指针
    array_pool_free_handler   pool_free;  // 自定义内存池释放函数指针
    array_free                free;       // 用于对数组元素做资源释放的函数指针
    mln_size_t                size;       // 单个数组元素的字节大小
    mln_size_t                nalloc;     // 初始数组长度,后续数组按照两倍进行扩张
};

typedef struct
{
    void                     *elts;
    mln_size_t                size;
    mln_size_t                nalloc;
    mln_size_t                nelts;
    void                     *pool;
    array_pool_alloc_handler  pool_alloc;
    array_pool_free_handler   pool_free;
    array_free                free;
} mln_array_t;

代码段

#include
#include
#include "mln_array.h"

#include "mln_array.c"

typedef struct
{
	int i;
	double d;
	char c[99];
} test_type ;
// 定义数组中元素类型 
 
int main()
{
	test_type * ptr;            // 元素类型指针 
	mln_array_t arr;            // 数组 
	struct mln_array_attr attr; // 数组初始化属性
	
	
	attr.pool = NULL;
	attr.pool_alloc = NULL;
	attr.pool_free = NULL;
	attr.free = NULL;
	attr.size = sizeof(test_type);
	attr.nalloc = 1;
	// 设置各项属性值 
	
	mln_array_init(&arr, &attr);
	// 按照初始化属性attr初始化数组arr 
	
	
	mln_size_t j, k, n;
	char C[] = "Hello world!";
	
	
	ptr = (test_type *)mln_array_push(&arr);
	// 向数组中追加1个元素,并将元素内存地址返回
	if(ptr == NULL) return 1;
	ptr -> i = 1;
	ptr -> d = 1.999999;
	for(k=0; k c[k] = C[k];
	ptr -> c[strlen(C)] = '\0';
	
	
	ptr = (test_type *)mln_array_pushn(&arr, 2);
	// 向数组中追加n个元素,并将这些元素的内存首地址返回
	if(ptr == NULL) return 1;
	for(j=0; j<2; j++)
	{
		ptr[j].i = j + 2;
		ptr[j].d = j + 2.999999;
		for(k=0; k

Melon库运用——数组篇_第1张图片

你可能感兴趣的:(C语言,c语言,melon)