c语言共享内存储存结构体,C语言共享内存使用思路利用结构体
这里不介绍如何创建共享内存,如果想知道百度一下就好了。只介绍一下如何使用这一段连续的共享内存空间。思路就是利用结构体。
创建一个结构体,它的大小可以用sizeof()获取。注意这里有一个四字节对齐的问题,所以结构体的大小不仅仅是结构体内变量所占内存的简单相加。
思路:你创建一个结构体,无论你的结构体怎样,利用memcpy函数配合sizeof将结构体变量,copy到共享内存中然后,用的时候再用memcpy从共享内存copy到结构体中就行了。
一个例子如下:
#include
#include
//#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语言共享内存储存结构体,C语言共享内存使用思路利用结构体相关推荐
- C语言里的4种存储类别,C语言中变量储存的类别
C语言中变量储存的类别 C语言根据变量的生存周期来划分,可以划分为静态存储方式和动态存储方式. C语言中变量储存的类别 静态存储方式:是指在程序的运行期间分配固定的存储空间的方式.静态存储区中存储放了 ...
- 论文解读:利用结构隐代码的隐神经表示方法来合成动态人体的新颖视角
从稀疏多视点视频合成表演者新颖视角图像.数据输入是通过同步的RGB相机捕获的表演者视频.体神经捕获表演者的3D几何和外表,用来进行3D重建和新颖视角合成. 01 摘要 本论文主要解决在稀疏排列相机情况 ...
- C语言中结构化数据(变量,指针,数组,字符串,结构体和联合)的内存表示
目录 结构化数据表示 一.内存地址: 二.全局变量和局部变量的内存布局 三.数据在内存中的表示 四.数组在内存中的表示 五.字符串在内存中的表示 六.结构和联合在内存中的表示 结构化数据表示 一.内存 ...
- new 一个结构体数组_C语言结构体到底占多少内存?简单!一文助你解决结构体内存问题...
前言 本文主要介绍的是C/C++中 结构体的所占用内存问题做以分析,希望对于广大读者有一些帮助.在编写C语言一下程序的时候: struct data{int iNum;float fNum;long ...
- c语言结构体数组内存大小,如何为C语言的结构体数组分配/释放内存?
如何为C语言的结构体数组分配/释放内存? struct emp { char name[10]; float salary; }; int main(int argc,char* argv[]) { ...
- C语言《认识结构体》---重点解析内存对齐
文章目录 结构体 一.结构体概念 二.结构体声明 (1).特殊声明 三.结构体变量的定义和初始化 (1).定义初始化例子1 (2).定义初始化例子2: (3).结构嵌套 四.结构体自引用 (1). 结 ...
- c语言结构体在内存中的存储,C语言结构体在内存中的存储情况探究------内存对齐...
条件(先看一下各个基本类型都占几个字节): voidsize_(){ printf("char类型:%d", sizeof(char)); printf("int类型:% ...
- c语言动态分配输出学生成绩,C语言之:结构体动态分配内存(利用结构体数组保存不超过10个学生的信息,每个学生的信息包括:学号、姓名和三门课(高数、物理和英语 )的成绩和平均分(整型)。)...
题目内容: 利用结构体数组保存不超过10个学生的信息,每个学生的信息包括:学号.姓名和三门课(高数.物理和英语 )的成绩和平均分(整型). 编写程序,从键盘输入学生的人数,然后依次输入每个学生的学号. ...
- NumPy-快速处理数据--ndarray对象--多维数组的存取、结构体数组存取、内存对齐、Numpy内存结构...
本文摘自<用Python做科学计算>,版权归原作者所有. 上一篇讲到:NumPy-快速处理数据--ndarray对象--数组的创建和存取 接下来接着介绍多维数组的存取.结构体数组存取.内存 ...
最新文章
- Numpy 统计变量(平均值、标准差、方差、最大、最小、和、乘积、对角线和)
- 10款屏幕取色器/颜色拾取工具软件介绍及下载地址[转]
- 优秀教程:创建基于 Ajax 的文件拖放上传功能
- 前端基础--jquery操作元素
- Asp.net core使用IIS在windows上进行托管
- FPS手游《战地先锋》性能案例精讲
- Serverless 实战 —— Funcraft + OSS + ROS 进行 CI/CD
- NLP简报(Issue#7)
- mysql由浅入深_由浅入深—MySQL数据库
- Eclipse取消Process Validating
- 为什么Hadoop将一定会是分布式计算的未来?
- 拓端tecdat|R语言有极值(EVT)依赖结构的马尔可夫链(MC)对洪水极值分析
- 【Leetcode 136】Single Number
- (pyqt5 qml qt quick) QAbstractTableModel.columnCount() is abstract and must be overridden
- C++利用Zip库解压缩文件
- Drive-by Compromise 术语名词概念
- swf to html5 movie maker,楠妈妈教大家用windowsxp自带的Movie maker软件做视频
- robot framework 实例:126邮箱登录
- win7不显示移动硬盘_Mac 下移动硬盘异常退出修复
- 我们使用 Kafka 生产者在发消息的时候我们关注什么(Python 客户端 1.01 broker)...
热门文章
- 小小智慧树机器人_中国工厂番外篇丨AGV机器人演绎智能“搬运工”
- php 微商城 开源,微商城开通为什么选php开源网店系统
- 高并发服务设计——缓存(转载)
- 第六篇 JVM核心机制之JVM运行和类加载全过程(一)
- 适配器模式真的很简单
- Verify an App Store Transaction Receipt 【苹果服务端 验证一个应用程序商店交易收据有效性】...
- 简单的C#字符串数组转字符串方法
- Java实现两个csv文件的对比_Java实现CSV文件差异对比
- ie运行不了java脚本界面_IE浏览器不能运行js JS代码失效不能运行了如何解决
- 使用Python把PowerPoint文件转换为配乐MP4视频