联合体以及如何调出内存窗口

联合体相关:

其实联合体这块儿基本上跟struct用法是相同的,只不过联合体这里公用一块内存。

为了合理演示其所有内容,需要调用一个内存窗口。这个在查找的时候还是费了一些功夫的。来分享一下。

这样直接执行根本看不到具体的执行过程。

可是怎么才能看到 他们共用一块内存呢?

//从当前窗口是没有办法查看内存的,程序一定要跑起来~才能查看。可是 跑到一半怎么才能查看呢!?~所以在 vs2010及以上版本,调用内存窗口很大的前提就是,为你正在进行的程序设置断点:

如下图:

然后运行程序。

进入当前界面。

摁下F11单步运行。

然后发现不管是在vs编译环境还是在 我们的小窗题里面,都看到了程序的下一步运行,现在打出来了联合体的三个地址。下一步应该是到内存窗口中进行查看了。

在运行中:点开调试下拉菜单:

然后点击 -> 窗口-> 内存 -> 内存1(1)。

然后就能看到左下角里面出来了我们想要的窗口:

这样内存窗口就出现了。

因为我们的输出窗口连显示得是:

所以我们在 内存里面输入这个地址:

然后敲击回车。就能看到我们输出的结果:

开始执行 union myUnion u;

u得到了一块空间,首地址是 0x0034FABC,长度为8个字节。

然后是 u.a = 0x1234

下面的内存显示得是:

34 12 00 00

然后 我们执行 u.b = 1l

内存显示的是:

01 12 00 00

然后打印联合体所占内存大小:

4

然后输出 他们每个子变量的地址,发现联合体中,他们共用一块地址,并且在同一个地方进行值的修改。

时间: 2024-10-14 11:04:46

联合体以及如何调出内存窗口的相关文章

Windbg Memory(内存)窗口的使用

在 WinDbg 中,可以查看和编辑内存,通过输入命令或通过使用内存窗口. 内存窗口的打开 通过菜单View-->Memory 通过快捷键Alt+5 通过工具栏 使用内存窗口 通过上面方式打开的窗口如下: 内存窗口显示多个列中的数据. 在窗口的左侧列显示每个行的开始地址. 其余列显示所需的信息,从左到右. 如果选择字节中显示格式菜单中,对应于这两个字节的 ASCII 字符将显示在窗口的右侧. 请注意  默认情况下,内存窗口显示虚拟内存. 这种类型是内存的内存的在用户模式下可用的唯一类型. 在内核

Linux系统如何在界面中调出命令窗口

原文地址:https://blog.csdn.net/qq_33747895/article/details/102691083 Ubuntu是linux系统的一个使用比较广泛的分支,有图形化界面,但是某些操作需要在终端(或者叫做:命令窗口:英文叫做:Terminal)中执行.下面介绍3种打开终端的方式:1.桌面点击右键选择terminal:2.搜索窗进行搜索terminal:3.采用快捷键“Ctrl”+“Alt”+“T”. 原文地址:https://www.cnblogs.com/lizhig

vs 开发 win32 程序,调出控制台窗口,方便调试

设置方法 项目 -> 属性 -> 生成事件 ->后期生成事件 -> 命令行 中添加 editbin /SUBSYSTEM:CONSOLE $(OutDir)\$(ProjectName).exe 运行效果 原文地址:https://www.cnblogs.com/xyb617/p/10762764.html

C语言之查看数据在内存中表现形式

#include<stdio.h> void viewRAM(); void main() { viewRAM(); } //查看内存,打印内存地址 void viewRAM() { int b[5] = { 1, 2, 3, 4, 5 }; //打印内存地址 printf("%x", b); //注意:数组在内存中连续排列的 system("pause"); } 1,在打印内存地址代码后面,右键. 2,选择断点,插入断点. 3,这时断点已经生效. 4,

C语言调试

1.调试的概念以及调试器的选择 在编写代码的过程中,相信大家肯定遇到过这样的情况:代码能够编译通过,没有语法错误,但是运行结果却不对,反复检查了很多遍,依然不知道哪里出了问题.这个时候,就需要调试程序了. 所谓调试(Debug),就是让代码一步一步慢慢执行,跟踪程序的运行过程.比如,可以让程序停在某个地方,查看当前所有变量的值,或者内存中的数据:也可以让程序一次只执行一条或者几条语句,看看程序到底执行了哪些代码. 在调试的过程中,我们可以监控程序的每一个细节,包括变量的值.函数的调用过程.内存中

C 联合体

联合体和结构体最大的区别是: 结构体各个成员都有自己的内存空间 联合体所有的成员共用同一个内存空间,空间的大小取决于所有成员中占用内存空间最大的那个. 放一段代码: #include <stdio.h> #include <stdlib.h> typedef union _m {     int c;     char name[20]; }M; int main() {     system("color 2E");     printf("联合体 

20160402_[转]联合体(union)的使用方法及其本质

原文:http://blog.csdn.net/huqinwei987/article/details/23597091 1.联合体union的基本特性——和struct的同与不同 union,中文名“联合体.共用体”,在某种程度上类似结构体struct的一种数据结构,共用体(union)和结构体(struct)同样可以包含很多种数据类型和变量. 不过区别也挺明显: 结构体(struct)中所有变量是“共存”的——优点是“有容乃大”,全面:缺点是struct内存空间的分配是粗放的,不管用不用,全

C——联合体(共同体)总结

联合体的特点 1.联合体是一种结构,在这个结构中可以不同类型的成员,但同一时间只能存放其中的一种. #include <stdio.h> union Demo { int a; char b; long long c; }; int main(){ union Demo demo; demo.a = 10; printf("a=%d\n", demo.a); printf("b=%d\n", demo.b); printf("c=%d\n&qu

[原]VS2010调试菜单下没有内存选项的解决方法

最近在调试程序的时候需要查看内存状况,却惊讶的发现调试菜单下的内存子菜单不见了! 然后我在网上各种找方法,没有一点效果.乱搞半天后终于找出方法来了.现将其分享之. 如果你是和我一样除了装了VC外,还有VB之类的,请从步骤一开始.否则从步骤二开始. 不同情况以及其它版本则根据实际情况自测. 步骤: 一:工具->导入和导出设置...->重置所有设置(如有需要可先将原有设置备份导出) 当出现下面这个对话框的时候,选择Visual C++ 开发设置,并点击完成. 二:重置完成之后就可以在进入调试状态下