C/C++語(yǔ)言中結(jié)構(gòu)體的內(nèi)存分配小例子
當(dāng)未用 #pragma 指令指定編譯器的對(duì)齊位數(shù)時(shí),結(jié)構(gòu)體按最長(zhǎng)寬度的數(shù)據(jù)成員的寬度對(duì)齊;當(dāng)使用了 #pragma 指令指定編譯器的對(duì)齊位數(shù)時(shí),結(jié)構(gòu)體按最長(zhǎng)寬度的數(shù)據(jù)成員的寬度和 #pragma 指令指定的位數(shù)中的較小值對(duì)齊。
#pragma 指令格式如下所示:
#pragma pack(4) // 或者 #pragma pack(push, 4)
舉例如下:(機(jī)器字長(zhǎng)為 32 位)
struct
{
char a;
}test;
printf("%d/n", sizeof test);
打印出來(lái)的結(jié)果為 1;
struct
{
char a;
short b;
char c;
}test;
printf("%d/n", sizeof test);
打印出來(lái)的結(jié)果為 6;
struct
{
char a;
int b;
char c;
}test;
printf("%d/n", sizeof test);
打印出來(lái)的結(jié)果為 12;
struct
{
char a;
double b;
char c;
}test;
printf("%d/n", sizeof test);
打印出來(lái)的結(jié)果為 24;
#pragma pack(4)
struct
{
char a;
double b;
char c;
}test;
printf("%d/n", sizeof test);
打印出來(lái)的結(jié)果為 16;
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)經(jīng)典24點(diǎn)算法
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)經(jīng)典24點(diǎn)算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10Qt出現(xiàn)假死凍結(jié)現(xiàn)象的原因及解決方法
應(yīng)用程序出現(xiàn)假死或凍結(jié)現(xiàn)象通常是由于一些常見(jiàn)問(wèn)題所導(dǎo)致的,本文主要介紹了Qt出現(xiàn)假死凍結(jié)現(xiàn)象的原因及解決方法,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10C++開(kāi)發(fā)在IOS環(huán)境下運(yùn)行的LRUCache緩存功能
本文著重介紹如何在XCODE中,通過(guò)C++開(kāi)發(fā)在IOS環(huán)境下運(yùn)行的緩存功能。算法基于LRU,最近最少使用,需要的朋友可以參考下2012-11-11C/C++中不同數(shù)據(jù)類(lèi)型之間的轉(zhuǎn)換詳解
這篇文章主要介紹了C/C++中不同數(shù)據(jù)類(lèi)型之間的轉(zhuǎn)換詳解,數(shù)據(jù)類(lèi)型轉(zhuǎn)換是計(jì)算機(jī)編程中常見(jiàn)的操作,用于將一個(gè)數(shù)據(jù)類(lèi)型轉(zhuǎn)換為另一個(gè)數(shù)據(jù)類(lèi)型,本文將對(duì)不同數(shù)據(jù)類(lèi)型之間的轉(zhuǎn)換作出說(shuō)明,需要的朋友可以參考下2023-10-10C/C++中CJSON的使用(創(chuàng)建與解析JSON數(shù)據(jù))
cJSON是一個(gè)超輕巧的JSON解析器,本文主要介紹了C/C++中CJSON的使用(創(chuàng)建與解析JSON數(shù)據(jù)),具有一定的參考價(jià)值,感興趣的可以了解一下2021-09-09C語(yǔ)言實(shí)現(xiàn)猜數(shù)字大小的游戲
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)猜數(shù)字大小的游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-01-01