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

相關文章
相關標籤/搜索