『C++』Temp_2018_12_26_02
#include <iostream>
#include <string>
#include <stdio.h>
#include <stdlib.h>
using namespace std; struct Person
{
int age;
int id;
}; template <class T> T myRead(void * memory)
{
char buffer[sizeof(T)];
memcpy(buffer, memory, sizeof(T));
T temp = *((T *)buffer); // 调用 Person 拷贝构造
return temp;
} template <class T> T myRead2(void * memory)
{
T temp;
memcpy(&temp, memory, sizeof(T));
return temp;
} template <class T> T* myRead3(void * memory, int offset)
{
T* temp = new T;
memcpy(temp, (char*)memory+offset, sizeof(T));
return temp; //返回指针, 有内存泄漏风险
} template <class T> void myRead4(void * memory, int offset, T* data)
{
memcpy(data, (char*)memory+offset, sizeof(T));
} template <class T> T* myRead5(void * memory, int offset)
{
T* t = (T*)((char*)memory+offset);
return t;
} int main()
{
char bytes[] = "\x05\x00\x00\x00\x0A\x00\x00\x00\x06\x00\x00\x00\x0C\x00\x00\x00";
Person p = myRead<Person>(bytes); // 调用 Person 拷贝构造
printf("age = %d, id = %d\n", p.age, p.id); Person p2 = myRead2<Person>(bytes); // 调用 Person 拷贝构造
printf("age = %d, id = %d\n", p2.age, p2.id); Person* p3 = myRead3<Person>(bytes, );
printf("age = %d, id = %d\n", p3->age, p3->id); Person* p4 = new Person;
myRead4<Person>(bytes, , p4);
printf("age = %d, id = %d\n", p4->age, p4->id); //这个会崩溃
//Person* p5 = NULL;
//myRead4<Person>(bytes, 7, p5);
//printf("age = %d, id = %d\n", p5->age, p5->id); Person* p6 = myRead5<Person>(bytes, );
printf("age = %d, id = %d\n", p6->age, p6->id); cin.get();
return ;
}
执行结果
age = , id =
age = , id =
age = , id =
age = , id =
//程序崩溃
age = , id =
『C++』Temp_2018_12_26_02的更多相关文章
- 『AngularJS』$location 服务
项目中关于 $location的用法 简介 $location服务解析在浏览器地址栏中的URL(基于window.location)并且让URL在你的应用中可用.改变在地址栏中的URL会作用到$loc ...
- [原创] 【2014.12.02更新网盘链接】基于EasySysprep4.1的 Windows 7 x86/x64 『视频』封装
[原创] [2014.12.02更新网盘链接]基于EasySysprep4.1的 Windows 7 x86/x64 『视频』封装 joinlidong 发表于 2014-11-29 14:25:50 ...
- JS 中通过对象关联实现『继承』
JS 中继承其实是种委托,而不是传统面向对象中的复制父类到子类,只是通过原型链将要做的事委托给父类. 下面介绍通过对象关联来实现『继承』的方法: Foo = { // 需要提供一个 init 方法来初 ...
- 『摄影欣赏』16幅 Romantic 风格照片欣赏【组图】
今天,我们将继续分享人类情感的系列文章.爱是人类最重要的感觉,也可能是各种形式的艺术(电影,音乐,书,画等)最常表达的主题 .这里有40个最美丽的爱的照片,将激励和给你一个全新的视觉角度为这种情绪.我 ...
- 『开源』Slithice 2013 服务器集群 设计和源码
相关介绍文章: <『设计』Slithice 分布式架构设计-支持一体式开发,分布式发布> <『集群』001 Slithice 服务器集群 概述> <『集群』002 Sli ...
- 『片段』OracleHelper (支持 多条SQL语句)
C# 调用 Oracle 是如此尴尬 >System.Data.OracleClient.dll —— .Net 自带的 已经 过时作废. >要链接 Oracle 服务器,必须在 本机安装 ...
- 『设计』Laura.Compute 设计思路
前言: 前一篇文章 <『开源』也顺手写一个 科学计算器:重磅开源> ,继 Laura.Compute 算法开源之后,有 博客园 园友 希望公开一下 Laura.Compute算法 的 设计 ...
- 『设计』Slithice 分布式架构设计-支持一体式开发,分布式发布
项目原因: 参与过各种 分布式项目,有 Socket,Remoting,WCF,当然还有最常用的可以跨平台的 WebService. 分布式编码的时间浪费: 但是,无一例外的,开发分布式程序的开发遵循 ...
- 转:『代码』JS封装 Ajax级联下拉列表
在博客园看到一篇不错的AJAX级联下拉列表,觉得不错,特地拿下来 :转载来自:『大雪无痕』 ,原文地址 //当一个 下拉列表 改变时,触发所有联动:(警告:各下拉列表之间 请不要出现 循环依赖) // ...
随机推荐
- vue-cli脚手架之其他文件解释
好了,脚手架目录中重要的文件基本都介绍了,但还有一个不太注意到的文件没有解释,这里也说明一下. config文件夹下的index.js,作用是不同开发环境下的参数配置(可选项很多,生产环境.开发环境. ...
- [转]webapi部署在IIS7.5报404的解决方案
1.iis 目录权限设置 2.转自:http://www.cnblogs.com/youlies/p/6042169.html 在web.config添加如下节点 <system.webServ ...
- npm全局安装失效修复
一.windows下 先查看npm包的默认安装目录 npm config get prefix 修改配置 npm config set prefix "nodeJs的安装目录" 二 ...
- Hibernate (ORM)
1 框架体系结构 2 hibernate入门 2.1 ORM框架 Hibernate是一个数据持久化层的ORM框架. Object:对象,java对象,此处特指JavaBean Relational: ...
- 多尺度几何分析(Ridgelet、Curvelet、Contourlet、Bandelet、Wedgelet、Beamlet)
稀疏基的讨论已经持续了近一个月了,这次讨论多尺度几何分析.但由于下面讨论的这些变换主要面向图像,而本人现在主要关注于一维信号处理,所以就不对这些变换深入讨论了,这里仅从众参考文献中摘抄整理一些相关内容 ...
- BitmapFactory 读取图片方法总结
①decodeFile(java.lang.String pathName) ②decodeResource(android.content.res.Resources res, int id ...
- androidtab
https://github.com/H07000223/FlycoTabLayout tensorflow https://github.com/topics/tensorflow-examples ...
- mongo 聚合函数
一: 聚合 常见的聚合操作跟sql server一样,有:count,distinct,group,mapReduce. <1> count count是最简单,最容易,也是最常用的聚合工 ...
- Mysql学习---视图/触发器/存储过程/函数/执行计划/sql优化 180101
视图 视图: 视图是一个虚拟表(非真实存在),动态获取数据,仅仅能做查询操作 本质:[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用.由 ...
- DESCRIBE:When you mouse click right-side is open an application and click left-side is attribution.
DESCRIBE:When you mouse click right-side is open an application and click left-side is attribution. ...