vs2015查看变量在内存中存储

一、调试--》窗口--》内存
vs2015查看变量在内存中存储
文章图片

定义结构体A

struct A { int a; char b; char *c; char d; }; int main() { A * pa = new A(); pa->a = 5; pa->b = 'a'; pa->c = "hello"; pa->d = 'b'; system("pause"); return 0; }

【vs2015查看变量在内存中存储】vs2015查看变量在内存中存储
文章图片

1)将地址pa中地址,复制到地址栏,回车,查看该地址下数据分布,第一行显示。
2)对照A的结构体,05代表一个字节(16进制表示形式),pa->a为int型使用4个字节存储,pa->a = 00000005(从右向左读),pb->b = 00000061(即字符‘a’),后面4个字节代表pa->c这个这真里面的数据,pa->d = 00000062(字符‘b’)。
注意:将换成char b[10]类型后,看看内存分布,变量是相邻存放的,好像并没有内存对齐?
实际:对于数组如char b[10] 其对齐字节为sizeof(char )
实际是进行了内存对齐,a占4个字节,b占1个字节 加一起是5 <8 ,系统会把数组中的前3个字符向前对齐,这样就不需要额外填充,c后面还剩7,而d占1个字节,刚好加一起是b的1字节是8,也是对齐的。
vs2015查看变量在内存中存储
文章图片

    推荐阅读