struct _m_malloc_dev { void(*init)(uint8_t);//初始化函数 uint8_t (*perused)(uint8_t);//内存使用率 uint8_t *membase[SRAMBANK];//内存池管理 srambank个区域的内存 uint16_t *memmap[SRAMBANK];//内存管理状态表 uint8_t memrdy[SRAMBANK];//内存管理状态是否就绪 }; struct _m_malloc_dev malloc_dev = { my_mem_init,//内存初始化 my_men_perused,//内存使用率 mem1base,mem2base,//内存池 mem1mapbase,mem2mapbase, //内存管理状态表 0,0, //内存管理未就绪 };
1. init:一个函数指针,接受一个uint8_t参数,用于初始化内存。struct _m_malloc_dev malloc_dev_array[2] = { { my_mem_init, my_men_perused, mem1base, mem2base, mem1mapbase, mem2mapbase, 0, 0 }, { // 第二个具有不同值的_m_malloc_dev实例 my_mem_init2, my_men_perused2, mem3base, mem4base, mem3mapbase, mem4mapbase, 1, 1 } };在这个示例中,malloc_dev_array是一个_m_malloc_dev结构体的数组。它包含两个结构体实例,每个实例的成员值都不同。
2. perused:一个函数指针,接受一个uint8_t参数,返回内存使用率。
3. membase:一个指向uint8_t指针的数组,表示每个SRAMBANK的内存池。
4. memmap:一个指向uint16_t指针的数组,表示每个SRAMBANK的内存管理状态表。
5. memrdy:一个uint8_t数组,表示每个SRAMBANK的内存管理状态是否就绪。
代码还初始化了一个名为malloc_dev的_m_malloc_dev结构体实例,具体赋值如下:
1. init被赋值为my_mem_init函数。
2. perused被赋值为my_men_perused函数。
3. membase被赋值为mem1base和mem2base。
4. memmap被赋值为mem1mapbase和mem2mapbase。
5. memrdy被赋值为0和0
membase被赋值为mem1base和mem2base,memmap被赋值为mem1mapbase和mem2mapbase,
memrdy被赋值为0和0。这些成员是数组,可以存储多个元素。
在提供的代码中,membase是一个指向uint8_t的指针数组,被初始化为包含两个元素mem1base和mem2base的数组。
类似地,memmap是一个指向uint16_t的指针数组,被初始化为包含两个元素mem1mapbase和mem2mapbase的数组。
最后,memrdy是一个uint8_t数组,被初始化为包含两个值为0的元素的数组。
这样可以让结构体存储这些成员的多个值,可以使用数组索引来访问它们。
结构体的实例也可实现多个
主要区别在于提供的代码定义了一个结构体的单个实例,而结构体数组允许定义多个实例,并可以使用数组索引来访问它们。
标签:初始化,malloc,uint8,dev,内存,数组,my,指针 From: https://www.cnblogs.com/mokongking/p/17531968.html