1.声明一个结构体,然后申请这个结构体大小的整数倍m大小的内存,地址记为ptr
2.声明一个该结构体指针类型的变量pool_memory,使其指向强制类型转换后的ptr
3.使用for循环,对内存进行数据初始化,然后尝试对初始化后的值进行输出。
4.此方法可以用于底层开发时,对“数据通道”的操作,即可以用一片内存模拟出不同ID的通道,虽然实际上并不存在,但是可以通过指针的偏移量来控制访问指定空间的内存,达到虚拟通道的概念。
5.demo如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct information{
int a;
char b;
char buf[32];
}Info, *INFO;
//这里以开辟3个通道为例
int main(){
int i;
//1.申请3个通道所需要的内存
char *ptr = malloc(sizeof(struct information) *3);
INFO pool_memory = (INFO)ptr;
for(i=0; i<3; i++){
pool_memory->a = i;
pool_memory->b = 'a'+i;
memcpy(pool_memory->buf, "this is a demo", sizeof("this is a demo"));
pool_memory++;
}
pool_memory -=3;
for(i=0; i<3; i++){
printf("pool_memory->a=[%d]\n", pool_memory->a);
printf("pool_memory->b=[%c]\n", pool_memory->b);
printf("pool_memory->buf=[%s]\n", pool_memory->buf);
printf("------------------------------------------\n");
pool_memory++;
}
if(!ptr){
free(ptr);
}
return 0;
}