C语言共享内存使用思路利用结构体

    这里不介绍如何建立共享内存,若是想知道百度一下就行了。只介绍一下如何使用这一段连续的共享内存空间。思路就是利用结构体。
数组

    建立一个结构体,它的大小能够用sizeof()获取。注意这里有一个四字节对齐的问题,因此结构体的大小不单单是结构体内变量所占内存的简单相加。
函数

    思路:你建立一个结构体,不管你的结构体怎样,利用memcpy函数配合sizeof将结构体变量,copy到共享内存中而后,用的时候再用memcpy从共享内存copy到结构体中就好了。code

    一个例子以下:内存

#include <string.h>
#include <stdio.h>
//#include <>

typedef struct 
{
	int i;
	char ch[1];
	float a;
}data, *dataptr;

int main(int argc, char const *argv[])
{
	char buf[255]={0};//利用这个buf,充当共享的内存空间。
	data stu1;
	data stu2;

	stu1.i = 12;
	stu1.ch[0]='a';
	stu1.a = 1.2;

	memcpy(buf, &stu1, sizeof(stu1));//copy到内存
	memcpy(&stu2, buf, sizeof(stu1));//copy回结构体变量
	printf("%d\n", stu2.i);
	printf("%c\n", stu2.ch[0]);
	printf("%f\n", stu2.a);
	printf("%ld\n",sizeof(float)+sizeof(int)+sizeof(char));//
	printf("%d\n", sizeof(stu1));//


	return 0;
}

    这样你能够在共享内存中使用任何类型的变量了。   
string

    最后两个printf函数打印的数值不一样,是由于四字节对齐。前一个打印是9,后一个打印是12,是四的倍数。你把data结构体中的ch数组大小该为5,再看一下打印结果。
io

相关文章
相关标签/搜索