1 °³¿ä
MemoryAlignment¶õ ¾Æ·¡¿Í °°Àº ±¸Á¶Ã¼ÀÇ Å©±â°¡ 11 ¹ÙÀÌÆ®°¡ ¾Æ´Ï¶ó, ÄÄÆÄÀÏ·¯ÀÇ ÆÐµù¿¡ ÀÇÇØ 12 ¶Ç´Â 16¹ÙÀÌÆ®°¡ µÇ´Â Çö»óÀ» µÎ°í ÇÏ´Â ¸»ÀÌ´Ù.
struct EMP
{
int ID; // 4 ¹ÙÀÌÆ®
char state[3]; // 3 ¹ÙÀÌÆ®
int salary; // 4 ¹ÙÀÌÆ®
};
sizeof(EMP) = ??? ÆÄÀÏ/¼ÒÄÏ µî¿¡¼ ÀÔÃâ·ÂÀ» ¼öÇàÇÒ ¶§ ÁÖ·Î ¹®Á¦°¡ µÈ´Ù. MemoryAlignment¶õ °ÍÀÌ ÀÖ´Â ÁÙµµ ¸ð¸£´ø ½ÃÀý¿¡ TGA À̹ÌÁö Çì´õ¸¦ ÀоîµéÀ̴µ¥, °í»ýÇß´ø ±â¾ïÀÌ »õ·Ï»õ·Ï... ¤Ð¤Ð
VisualCpp¿¡¼´Â #pragma pack ±¸¹®À» ÀÌ¿ëÇÏ¿© °£´ÜÈ÷ ÇØ°áÇÒ ¼ö ÀÖ´Ù. ÆÄÀÏ/¼ÒÄÏ µî¿¡ ±â·ÏÇÏ´Â ±¸Á¶Ã¼´Â Á¤·ÄÀ» 1¹ÙÀÌÆ®·Î Áà¾ßÇÒ °ÍÀÌ´Ù. ´Ù¸¥ ÄÄÆÄÀÏ·¯¿¡µµ ºñ½ÁÇÑ ±¸¹®ÀÌ ÀÖÀ» µí ÇÏ´Ù.
// pragma_directives_pack.cpp
// compile with: /W1 /LD
#pragma pack() // n defaults to 8; equivalent to /Zp8
#pragma pack(show) // C4810
#pragma pack(4) // n=4
#pragma pack(show) // C4810
#pragma pack(push, r1, 16) // n=16, pushed to stack
#pragma pack(show) // C4810
#pragma pack(pop, r1, 2) // n=2 , stack popped
#pragma pack(show) // C4810
2 ¸µÅ©
SeriousMoin v1 (koMoinMoin 1.0a4 Modified)