qt 内存的直接拷贝函数应用,简单实验

1.概要

面向对象的开发多了,对于内存的直接拷贝方法就疏忽了,很多时候,当需要没有那么丰富的时候很多时候,都是用的内存直接拷贝的方法。最近看一个纯粹的c语言的程序,发现大量基于内存的拷贝和比较的应用,今天我再做通讯的时候,突然想到,如果把一块内存就直接拷贝给通讯层,不就简单很多吗,类肯定不行,结构体可以吗,结构体可以但前提是得内存整齐的情况下,要不然结构体会多申请一些内存。总之实验失败了,但是把结果记录下来,因为这种直接拷贝的方法还是有很多可以简化开发的场景的。

2.代码

#include <QCoreApplication>
#include <QDebug>
#include <QByteArray>
#include <QIODevice>
#include <string.h>



//结构体拷贝
typedef struct myStruct
{
    unsigned short data1;
    unsigned char data2;
    unsigned char data4;
    unsigned char data5;
    unsigned int  data3;
} Mystruct;

//关于内存的直接拷贝
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    Mystruct ms;
    ms.data1 = 0x01;
    ms.data2 = 0x3;
    ms.data4 = 0x4;
    ms.data5 = 0x5;
    ms.data3 = 0x0202;
    int size = sizeof(Mystruct);
    char b[size];
    std::memcpy(b, &ms, size);
    for(int i=0;i<sizeof(b);i++){
        int d = b[i];
        qDebug()<<i<<":"<<d;
        //cout<<i<<":"<<d;
    }

    qDebug()<<"size:"<<size;
    qDebug()<<"结构体拷贝实验";
    return a.exec();
}

3.运行结果

0 : 1
1 : 0
2 : 3
3 : 4
4 : 5
5 : 0
6 : 0
7 : 0
8 : 2
9 : 2
10 : 0
11 : 0
size: 12
�ṹ�忽��ʵ�� 

4.总结 

这里我特意用了一个不整齐的内容,如果是整齐的内存不考虑大小端的情况下,直接拷贝是可以的,即使考虑内存对齐,如果涉及好结果,让对齐的部分在最后,也是可以根据有效直接直接拷贝有效数据的 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值