千家信息网

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

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,这篇文章将为大家详细讲解有关c#如何探索内存大小段存储,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.A的ASCII码16进制存储为41,对应B,C,D,E为42
千家信息网最后更新 2024年11月11日c#如何探索内存大小段存储

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

1.

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

VS下为小段模式

2.

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

3.

#include#pragma pack(4)struct A{        int a;        char b;        short c;        char d[11];};aaaab0ccddddddddddd//应补齐最大对齐数的整数倍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//ddddddddcout << 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#如何探索内存大小段存储"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

0