`
godfrey90
  • 浏览: 54891 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

内存中的各变量分配验证

    博客分类:
  • c++
阅读更多
#include <iostream>
using namespace std;

struct S
{
	int a;
	char b;
	int c;
	char d;
	char e;
	int f;
	double g;
	int h;
};
int main()
{
	S s;
	s.a = 10;
	s.b = 'b';
	s.c = 30;
	s.d = 'd';
	s.e = 'e';
	s.f = 60;
	s.g = 70.0;
	s.h = 80;

	cout<<sizeof(s)<<endl;

	void* x = &s;
	cout<<*(int*)x<<endl;	//a
	x = (int*)x+1;
	cout<<*(char*)x<<endl;  //b
	x = (int*)x+1;
	cout<<*(int*)x<<endl;	//c
	x = (int*)x+1;
	cout<<*(char*)x<<endl;	//d
	x = (char*)x+1;
	cout<<*(char*)x<<endl;	//e
	x = (char*)x+3;
	cout<<*(int*)x<<endl;	//f
	x = (int*)x+1;
	cout<<*(double*)x<<endl;	//g
	x = (double*)x+1;
	cout<<*(int*)x<<endl;	//h
	return 0;
}


输出结果为:
32
10
b
30
d
e
60
70
80
分享到:
评论

相关推荐

    Java中堆和栈的区别

    String中==与equals区别验证!...当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。

    关于JVM的总结

    准备:正式为类变量分配内存,并设置变量初始值.这些变量都存储在方法区. 解析:将常量池中的符号引用替换为直接引用的过程,虚拟机不会重新再解析而是通过缓存去拿出解析的数据 初始化:在准备阶段已经赋过一个系统...

    利用全局及外部变量实现C51无能数化调用A51函数

    摘要:利用C51全局及外部变量,可实现无参数化调用A51函数,不但避免开了传统C51调用C51时繁琐的接口约定,而且把在A51中所用到的变量全部放至C51程序中而不必考虑变量在内存中的位置,使编程更加简洁。用实例验证了...

    深入理解JVM内存结构及运行原理全套视频加资料.txt

    包括JVM执行过程、虚拟机类加载机制、运行时数据区、GC、类加载器、内存分配与回收策略等,全套视频加资料高清无密码  第1讲 说在前面的话 免费 00:05:07  第2讲 整个部分要讲的内容说明 免费 00:06:58  第3讲...

    编译原理全套

    3.2.3 验证文法产生的语言 3.2.4 适当的表达式文法 3.2.5 消除二义性 3.2.6 消除左递归 3.2.7 提左因子 3.2.8 非上下文无关的语言结构 3.2.9 形式语言鸟瞰 3.3 自上而下分析 3.3.1 自上而下分析的一般方法 ...

    深入理解Java虚拟机视频教程(jvm性能调优+内存模型+虚拟机原理)视频教程

    第29节对象在内存中的布局-对象的创建00:21:19分钟 | 第30节探究对象的结构00:13:47分钟 | 第31节深入理解对象的访问定位00:08:01分钟 | 第32节垃圾回收-概述00:06:20分钟 | 第33节垃圾回收-判断对象是否存活...

    玩转Java虚拟机(一)

    从今天开始打卡学习JVM,第一天 本人学习过程中所整理的代码,源码地址 ...准备 -&gt; 为类的静态变量分配内存,并将其初始化为默认值;解析 -&gt; 把类中的符号引用转换为直接引用 初始化:为类的静态变

    mapguard:MapGuard是一个针对基于mmap的页面分配强制实施安全策略的库

    Map Guard是一种概念验证的内存代理,旨在通过拦截,修改和记录基于mmap的页面分配来减轻内存安全漏洞。 它实施了一组可通过环境变量配置的简单分配安全策略。 它在打开和关闭的源程序上透明地工作,而无需在目标中...

    bedrock2:一种进行中的语言和编译器,用于经过验证的低级编程

    寄存器分配(如果需要的局部变量多于可用寄存器,则进行溢出) 非功能 一个设计决定是不支持以下功能: 功能指针 递归函数(我们可能会在以后添加它们,但我们始终想证明我们不会耗尽堆栈空间) 非终止程序(顶级...

    Java虚拟机

    原子性、可见性和有序性在Java内存模型中的体现;先行发生原则的规则和使用;线程在Java语言中的实现原理;虚拟机实现高效并发所做的一系列锁优化措施。 前言 第一部分 走近Java 第1章 走近Java 1.1 概述 1.2 ...

    LanguageCreator:一种自制玩具编程语言。 构造一个AST并验证作用域规则。 具有类型推断功能,支持函数和函数,具有构造函数的类(但无继承),while和for循环,ifelseifelse条件,异常,动态对象等

    变量分配 if / else条件声明 具有可变参数的函数声明 匿名功能 带引号的字符串 简单类型推断 基本类(无继承) 异常处理 无支持 部分功能的创建和应用 支持的内置类型有: 整型 漂浮 细绳 空白 bool(布尔值是...

    net学习笔记及其他代码应用

    答:Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的. [Page] 26.根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写: namespace test { public ...

    精通Windows.API-函数、接口、编程实例.pdf

    5.4.3 修改内存页面状态和保护属性、将页面锁定在物理内存中 142 5.4.4 管理其他进程的虚拟内存 143 5.5 内存操作与内存信息管理 144 5.5.1 复制、填充、移动、清零内存块、防止缓冲区溢出 144 5.5.2 获得...

    gsoap 2.8 (SOAP/XML 关于C/C++ 语言的自动化实现工具内附 CSharp webservice例子,及GSOAP client和server例子)

    而在1.x版本中,由于静态分配环境变量,多线程技术是不被允许的(只有一个线程可以用这个环  境变量调用远程方法或处理请求信息)。  4 准备工作  要开始用gSOAP创建一个web服务应用, 你需要:  一个C/C++编译器....

    cAT:Plain C库,用于解析用于主机设备中的AT命令

    稳健的实现100%静态实现(不分配任何动态内存) 很小的占用空间(RAM和ROM) 支持READ,WRITE,TEST和RUN类型的命令命令快捷方式(自动选择最佳命令候选者) 单个请求-多个响应不请自来的读取/测试命令支持保持状态...

    深入理解_Java_虚拟机 JVM_高级特性与最佳实践

    / 316 12.1 概述 / 316 12.2 硬件的效率与一致性 / 317 12.3 Java内存模型 / 318 12.3.1 主内存与工作内存 / 319 12.3.2 内存间交互操作 / 320 12.3.3 对于volatile型变量的特殊规则 / 322 12.3.4 对于long和...

    RFC中文文档-txt

    RFC496 IMP/TIP 内存更新时间表(修订版 2) RFC516 丢失消息的检测 RFC591 在 NVT ASCII UCSB和在线系统之间的实验输入映象 RFC621 “注意圣诞节的时候要把长袜挂在烟囱下面” RFC628 更深的数据语言的设计观念 RFC...

    2013-01-30 泛型、反射.pdf

    因为 只有当T确定为某种类型的时候,JIT才有可能计算出 当前MyList类的对象在内存中要分配多大的空间。 3.泛型约束 3.1基类约束 public class House,TPet2&gt; where TPet:Dog //约束 TPet必须是 Dog或Dog的...

    中文版RFC,共456

    RFC496 IMP/TIP 内存更新时间表(修订版 2) RFC516 丢失消息的检测 RFC591 在 NVT ASCII UCSB和在线系统之间的实验输入映象 RFC621 “注意圣诞节的时候要把长袜挂在烟囱下面” RFC628 更深的数据语言的设计观念 RFC...

    [编译原理].陈意云.文字版

    3.2.3 验证文法产生的语言 3.2.4 适当的表达式文法 3.2.5 消除二义性 3.2.6 消除左递归 3.2.7 提左因子 3.2.8 非上下文无关的语言结构 3.2.9 形式语言鸟瞰 3.3 自上而下分析 3.3.1 自上而下分析的...

Global site tag (gtag.js) - Google Analytics