這裏不介紹如何建立共享內存,若是想知道百度一下就行了。只介紹一下如何使用這一段連續的共享內存空間。思路就是利用結構體。
數組
建立一個結構體,它的大小能夠用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