[問題] 消失的1byte ???
想要驗證使用pragma pack()的功能
因此參考網路外又自己做了點小修改的一個程式
#include <stdio.h>
#include <conio.h>
#include <windows.h>
int main(int argc, char* argv[])
{
#pragma pack(4)
////記憶體對齊單位用DWORD
typedef struct _aligment_DWORD{
char a ;
WORD test1;
char b ;
char c ;
char d ;
} aligment_DWORD;
#pragma pack( )
aligment_DWORD ali_dw ;
ali_dw.a = 'A' ;
ali_dw.b = 'B' ;
ali_dw.c = 'C' ;
ali_dw.d = 'D' ;
LPTSTR pointer ;
printf("aligment_DWORD struct is %d BYTES \n",sizeof(ali_dw));
pointer = (LPTSTR)(&ali_dw) ;
printf("ali_dw.a is %c \n",*pointer);
printf("ali_dw.test1 is %c \n",*(pointer + 1 ));
printf("ali_dw.test1 is %c \n",*(pointer + 2 ));
printf("ali_dw.test1 is %c \n",*(pointer + 3 ));
printf("ali_dw.b is %c \n",*(pointer + 4 ));
printf("ali_dw.c is %c \n",*(pointer + 5 ));
printf("ali_dw.d is %c \n",*(pointer + 6 ));
system("pause");
return 0;
}
出來結果struct是8 bytes
但是在第二個宣告...WORD test1那邊並沒有宣告
所以預期應該是有"4個"隨機的character會出現在A~B之間
但下方的printf那邊已經把A~D都用指標抓出來了
但中間的test1卻只有3個???
所以總和也只有7 bytes
剩下的1 byte呢?
我要如何用指標去抓出來呢???
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 124.9.4.124
推
01/12 12:28, , 1F
01/12 12:28, 1F
→
01/12 12:28, , 2F
01/12 12:28, 2F
→
01/12 12:29, , 3F
01/12 12:29, 3F
→
01/12 12:30, , 4F
01/12 12:30, 4F
→
01/12 12:31, , 5F
01/12 12:31, 5F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章