『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级联下拉列表,觉得不错,特地拿下来 :转载来自:『大雪无痕』 ,原文地址 //当一个 下拉列表 改变时,触发所有联动:(警告:各下拉列表之间 请不要出现 循环依赖) // ...
随机推荐
- 10分钟学会Less开发环境搭建与初体验
Less 是一门 CSS 预处理语言,它扩充了 CSS 语言,增加了诸如变量.混合(mixin).函数等功能,让 CSS 更易维护.方便制作主题.扩充. 今天看一下,10分钟能不能手把手快速教会你Le ...
- Linux基础之命令练习Day4-fdisk,mkfs,mlabel,mount,umount,mkswap,swapon,dd,top,free,ps,kill,rpm,yum,make
一. 硬盘分区.格式化及文件系统的管理 1. 在Linux系统中,一切皆文件.每个设备都被当作一个文件来对待. 常见的存储设备在Linux系统中的文件名如下表所示: 2. 对硬盘进行分区有以下优点: ...
- VC学习笔记----STL库
STL = Standard Template Library,标准模板库,惠普实验室开发的一系列软件的统称.它是由Alexander Stepanov.Meng Lee和David R Muss ...
- 目前比较全的CSS重设(reset)方法总结(转)
原文地址 在当今网页设计/开发实践中,使用CSS来为语义化的(X)HTML标记添加样式风格是重要的关键.在设计师们的梦想中都存在着这样的一个完美世界:所有的浏览器都能够理解和适用多有CSS规则,并且呈 ...
- java面试题----IO流种类及接口方法
java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入和输出两种 ...
- [转]优化IIS7.5支持10万个同时请求的配置方法
通过对IIS7的配置进行优化,调整IIS7应用池的队列长度,请求数限制,TCPIP连接数等方面,从而使WEB服务器的性能得以提升,保证WEB访问的访问流畅 通过对IIS7的配置进行优化,调整IIS7应 ...
- RabbitMq ack 与 nack
1.ack 移除 2.nack 移除再次发送队列
- The FLARE On Challenge
上周才开始做这个CTF,用一周左右的时间完成了全部7道题.算是为即将到来的找工作进行热身和学习,下面记录一下遇到的问题和学到的东西,具体的解题过程就不详细描述了. challenge1 这道题用IDA ...
- 一个典型的后台软件系统的设计复盘——(二)如何id一个事物
这个话题,可以从类与对象说起. Dog dog1 = new Dog(); 哪个是类,哪个是对象?这个问题搞不清楚,后面就无从说起了.然后两个程序员之间沟通说,那个狗有问题.除非两人很默契,不然另一人 ...
- JS 和 Jq 获取客户端各种屏幕宽度和高度
//javascript 网页可见区域宽: document.body.clientWidth 网页可见区域高: document.body.clientHeight 网页可见区域宽: documen ...