c#如何探索内存大小段存储-创新互联

这篇文章将为大家详细讲解有关c#如何探索内存大小段存储,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、微信小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了寿光免费建站欢迎大家使用!

1.c#如何探索内存大小段存储

A的ASCII码16进制存储为41,对应B,C,D,E为42,43,44,45;

VS下为小段模式

2.c#如何探索内存大小段存储

将高精度存入低精度时,截取掉高位,高位补ff,内存中默认用cc初始化

c#如何探索内存大小段存储

3.

#include
#pragma pack(4)
struct A
{
	int a;
	char b;
	short c;
	char d[11];
};
aaaab0cc
dddddddd
ddd//应补齐大对齐数的整数倍
int main()
{
	
	cout << sizeof(A) << endl;
	cout << offsetof(A,a) << offsetof(A,b) << offsetof(A,c) << offsetof(A,d) << endl;
	system("pause");
	return 0;
}

运行结果为:20  0,4,6,8

4.

struct B
{
int a;
char c;
double d;
};
//aaaac000
//dddddddd
cout << sizeof(B) << endl;
cout << offsetof(B,a) << offsetof(B,c) << offsetof(B,d) << endl;

运行结果:16  0,4,8

5.

struct A
{
	int a;
	char b;
	short c;
	char d[11];
};
struct B
{
	int a;
	char c;
	double d;
	A e;
};
cout << sizeof(B) << endl;
cout << offsetof(B, a) << offsetof(B, c) << offsetof(B, d) << offsetof(B, e) << endl;

运行结果:36  0,4,8,16

e不是对齐到d后面,按A本身大整数倍对齐数。

6.

#include
#pragma pack(4)
struct A
{
	int a;
	char b;
	short c;
	char d[11];
};
struct B
{
	int a;
	double d;
	char c;
	A e;
};
cout << sizeof(B) << endl;
cout << offsetof(B, a) << offsetof(B, c) << offsetof(B, d) << offsetof(B, e) << endl;

运行结果:36  0,4,12,16

7.

#include
#pragma pack(8)
struct A
{
	int a;
	char b;
	short c;
	char d[11];
};
struct B
{
	int a;
	double d;
	char c;
	A e;
};
cout << sizeof(B) << endl;
cout << offsetof(B, a) << offsetof(B, c) << offsetof(B, d) << offsetof(B, e) << endl;

运行结果:40  0,8,16,20

关于“c#如何探索内存大小段存储”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享标题:c#如何探索内存大小段存储-创新互联
文章网址:http://azwzsj.com/article/diooeh.html