ÊÑ¿ô¤Î¥¹¥³¡¼¥×¤È¥á¥â¥ê´ÉÍý¤Ë¤Ä¤¤¤Æ

ÊÑ¿ô¤Î¼÷Ì¿¤È¥á¥â¥ê¤Î̵Â̻Ȥ¤¤ò¸º¤é¤¹¤³¤È¤Ç
»È¤¨¤ë¥á¥â¥ê¤âÁý¤¨¤ë¤·¡¢¼Â¹Ô®Å٤⮤¯¤Ê¤Ã¤Æ¥¦¥Þ¡¼
¤¢¤È¡¢¼÷Ì¿¤ä¥á¥â¥ê¤Î´ÉÍý¤¬¤ï¤«¤ë¤è¤¦¤Ë¤Ê¤ë¤È¥³¡¼¥Ç¥£¥ó¥°¤â¤ä¤ê¤ä¤¹¤¯¤Ê¤ë¤·
¡Ê¥¯¥é¥¹¤È¤«¹½Â¤ÂΤγµÇ°¤Ã¤ÆÆͤ­µÍ¤á¤ë¤È¤½¤ì¤Ê¤ó¤À¤è¤Í¡Ë
Æäˡ¢¥²¡¼¥à¤À¤È®Å٤äÆÂç»ö¤À¤·¤Ê¤¡

­¡ ÊÑ¿ô¤Î¼÷Ì¿
static ÄêµÁ
¥°¥í¡¼¥Ð¥ë¶õ´Ö¤ËÄêµÁ¤¹¤ë¤È
ÊÑ¿ô¤Î¼÷Ì¿¤Ï¥×¥í¥°¥é¥à³«»Ï»þ¤Ë¥á¥â¥ê³ÎÊݤµ¤ì½ªÎ»¤Þ¤Ç»Ä¤ê³¤±¤ë
¤¿¤À¤·¡¢¥á¥â¥ê¤ò¾ï¤ËÊÝ»ý¤·Â³¤±¤ë¤Î¤Ç
¥á¥â¥êÍÆÎÌÀ©¸Â¤¬¤¢¤ë¾ì¹ç¤Ï¤¢¤Þ¤ê¤è¤¯¤Ê¤¤¤«¤â¤·¤ì¤Ê¤¤

¥í¡¼¥«¥ë¤ÊÊÑ¿ô¤Î¾ì¹ç¡¢¥Ö¥í¥Ã¥¯¡Ê¥«¥®¥«¥Ã¥³¡Ë¤ò¤Ì¤±¤ë¤Þ¤Ç¤¬ÊÑ¿ô¤Î¼÷Ì¿
¤¿¤È¤¨¤ÐÉáÄ̤˻ȤäƤ¤¤ëint¤ÏVC¾å¤Ç¤ÏÀµ¼°¤Ë¤Ïauto int¤Ç¤¢¤ê¡¢auto¤Ï¾Êά¤µ¤ì¤Æ¤¤¤ë
¡Ê¤«¤Ã¤³Æâ¤Ç¼÷Ì¿¤ò»ý¤Ä¼«Æ°ÊÑ¿ô¤È¤¤¤¦°ÕÌ£¡Ë
¤Û¤«¤Ë¤âextern¤Ê¤É¤ÏÊ£¿ô¤Î¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤Ë¤Þ¤¿¤¬¤ê¡¢¶¦Ä̤·¤Æ»È¤¨¤ë¹­°èÊÑ¿ô

{
 int a;
 {
  int b;
 }// ¢«b¤Î¼÷Ì¿
}//¢«a¤Î¼÷Ì¿

­¢placement new
Ä̾ưŪ¤Ê¥á¥â¥ê¤ò³ÎÊݤ¹¤ë¤Ë¤Ïmalloc¤änew¤ò»È¤¦¤¬
placement new¤Ï¤â¤È¤«¤é³ä¤êÅö¤Æ¤é¤ì¤¿¥á¥â¥êÎΰ褫¤éɬÍפʥǡ¼¥¿¥µ¥¤¥ºÊ¬¡¢
¥á¥â¥ê¤ò³ÎÊݤ¹¤ëÊýË¡
¥á¥â¥ê¤ò³ÎÊݤ¹¤ëÂоݡÊÇÛÎó¤Ê¤É¡Ë¤ò¥á¥â¥ê¥×¡¼¥ë¤È¤¤¤¦
Ä̾ï¤ÎưŪ³ÎÊݤȰ㤤¡¢¤¹¤Ç¤Ë³ä¤êÅö¤Æ¤Æ¤¤¤ëÎΰ褫¤é
¶õ¤­¥á¥â¥ê¤ò¼è¤ì¤ë¾ì½ê¤òõº÷¤¹¤ë¤¿¤á¡¢new¤È°ã¤¤¹â®
¤Þ¤¿¡¢¥á¥â¥ê²òÊü¤Ï¤â¤È¤«¤é³ä¤êÅö¤Æ¤é¤ì¤Æ¤¤¤ëÎΰè¤ò»È¤¦¤Î¤Ç
new¤È°ã¤¤¡¢delete¤·¤Ê¤¯¤Æ¤â¤è¤¤¡Ê¥á¥â¥ê¥×¡¼¥ë¤¬²òÊü¤µ¤ì¤ëÊݾڤ¬¤¢¤ì¤Ð¤è¤¤¡Ë

// placement new
#define _CRT_SECURE_NO_DEPRECATE 1 /* VisualC++2005 ¤Ç¤Î·Ù¹ðÍÞÀ© */
#include <new>
#include <iostream>
#include <cstring>

char global_area[1000]; // ¥°¥í¡¼¥Ð¥ëÎΰè

int main()
{
// ¥°¥í¡¼¥Ð¥ëÎΰè¤Ë¡¢char10¸Äʬ¤ÎÎΰè¤ò³ÎÊݤ·¤Æ¡¢¤½¤³¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤òÆÀ¤ë
char* p = new(global_area) char[10];
::strcpy( p, "aaaaaaaaa" );

// Ʊ¤¸·ë²Ì¤¬½ÐÎϤµ¤ì¤ë¤³¤È¤ò³Îǧ¤¹¤ë
std::cout << p << std::endl;
std::cout << global_area << std::endl;

return 0;
} 

­£¥¢¥é¥¤¥á¥ó¥È
½èÍý·Ï¤´¤È¤Ë·×»»¤¬¤·¤ä¤¹¤¤¤È¤¤¤¦Ã±°Ì¤¬·è¤Þ¤Ã¤Æ¤¤¤ë
¤¿¤È¤¨¤Ð32bit¥Þ¥·¥ó¤Ç¤¢¤ì¤Ð¡¢Æ±»þ¤Ë32bit¡Ê4¥Ð¥¤¥È¡Ë¤Þ¤Ç
1²ó¤Î·×»»¤Ç½èÍý¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë
¤³¤ì¤¬¥á¥â¥ê´ÉÍý»þ¤Ëº¤¤Ã¤¿»öÂÖ¤òȯÀ¸¤¹¤ë¤³¤È¤¬¤¢¤ë
¡ÊÆä˥ͥåȥ¥¯·Ï¡¢¤Þ¤¿¤Ï¥á¥â¥ê»ÈÍÑÎ̤ÎÀ©¸Â¤¬¤¢¤ë¤È¤­¡Ë
¤È¤¤¤¦¤Î¤Ï
¤¿¤È¤¨¤Ð¤Ë32bit¥Þ¥·¥ó¤Ë¤È¤Ã¤Æ¤Ï4¥Ð¥¤¥Èñ°Ì¤Î¤¬·×»»¤·¤ä¤¹¤¤¤Î¤Ç
¾¡¼ê¤ËVC2005¤Î¥³¥ó¥Ñ¥¤¥é¤Ï¡Ê¹½Â¤ÂΤʤɤΡ˥ǡ¼¥¿·¿¤ò4¤ÎÇÜ¿ô¤ËÅý°ì¤·¤Æ¤·¤Þ¤¦
¤³¤Î¤È¤­È¯À¸¤¹¤ë¥Ç¡¼¥¿¤Î·ä´Ö¤Î̵ÂÌ¥á¥â¥ê¤ò¥¢¥é¥¤¥á¥ó¥È¤È¤¤¤¦

Âкö¤È¤·¤Æ¤Ï32bit¥Þ¥·¥ó¤Î¾ì¹ç¡¢
£±¤Ä¤á¤Ï4¥Ð¥¤¥Èñ°Ì¤Î¥Ç¡¼¥¿·¿¤«¤éÊÑ¿ô¤òÄêµÁ¤·¤Æ¤¤¤­¥Ñ¥Ç¥£¥ó¥°¤òÆþ¤ì¤ë
¤¿¤À¤·¡¢¤³¤Î¾ì¹ç½èÍý·Ï¤´¤È¤Ë¹½Â¤ÂΤÎÃæ¿È¤Î¥Ñ¥Ç¥£¥ó¥°¤òÊѤ¨¤Ê¤¤¤È¤¤¤±¤Ê¤¯¤Ê¤ë
¤â¤¦¤Ò¤È¤Ä¤Ï#pragma pack¤ò»È¤¦

#pragma¼«ÂΤâ½èÍý·Ï°Í¸¤À¤¬

#pragma pack(push,¥¢¥é¥¤¥á¥ó¥È)¤ò»È¤¦¤³¤È¤Ç¥¢¥é¥¤¥á¥ó¥È¤ò»ØÄꤷ¤Æ¤ä¤ë¤³¤È¤¬¤Ç¤­¤ë
¤Þ¤¿¡¢#pragma pack(pop)¤ÇŬ±þÈϰϤò»ØÄꤷ¤Æ¤ä¤ë¤³¤È¤â¤Ç¤­¤ë

#pragma pack¤Ï¤Û¤È¤ó¤É¤ÎC¥³¥ó¥Ñ¥¤¥é¤Ç»È¤¨¤ë¤é¤·¤¤¡¦¡¦¡¦¡Ê³Îǧ¤ÏɬÍסË

// ¥¢¥é¥¤¥á¥ó¥È
#include <stdio.h>

typedef struct s1
{

char ch1;

int i1;

} t1;


// ¥¢¥é¥¤¥á¥ó¥È¤ò»ØÄꤷ¤Æ¤ä¤ë
// 1,2,4,16,32(2¤ÎÇÜ¿ôñ°Ì)
#pragma pack(push,1)
typedef struct s2
{

char ch1;

int i1;

} t2;
#pragma pack(pop)

int main(int argc,char *argv[])

{

printf("size of t1=%d\n",sizeof(t1));

printf("size of t2=%d\n",sizeof(t2));

return 0;

}
ÁªÂò»è Åêɼ
¡Ê¡°¦Ø¡°¡Ëktkr 0  
ÉáÄÌ 0  
¡£¡Ê`¦Ø¡­#¡Ë¡£¤Ê¤ó¤¸¤ã¤³¤ê¤ã¤¢¤¢ 0  

¥È¥Ã¥×   ¿·µ¬ °ìÍ÷ ñ¸ì¸¡º÷ ºÇ½ª¹¹¿·   ¥Ø¥ë¥×   ºÇ½ª¹¹¿·¤ÎRSS