vs2015查看变量在内存中存储

一、调试--》窗口--》内存

vs2015查看变量在内存中存储_第1张图片

定义结构体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查看变量在内存中存储_第2张图片

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查看变量在内存中存储_第3张图片

你可能感兴趣的:(C++)