码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-09-29 06:37:51      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:

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

    创建一个结构体,它的大小可以用sizeof()获取。注意这里有一个四字节对齐的问题,所以结构体的大小不仅仅是结构体内变量所占内存的简单相加。

    思路:你创建一个结构体,无论你的结构体怎样,利用memcpy函数配合sizeof将结构体变量,copy到共享内存中然后,用的时候再用memcpy从共享内存copy到结构体中就行了。

    一个例子如下:

#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;
}

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

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














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

标签:

原文地址:http://my.oschina.net/u/2255341/blog/512108

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!