再问placement new有关问题,大家都来指教一下

再问placement new问题,大家都来指教一下
关于placement   new再深入的问题:
---------------

前段事件,我问过关于placement   new的问题,一位仁兄讲了一些道理,他说道:

::栈上的对象(注意,是类对象,char类型就无需了,后面还会提到)保证放在对齐地址上.  

但是,个人实验了一下,发现并不是这样

例如:
int   main()
{
char   c1   =   'A '   ;
char   c2   =   'B '   ;
char   c3   =   'C '   ;
char   c4   =   'D '   ;
char   c5   =   'E '   ;

//--------   验证这四个地址是否是   4   的倍数   --------------//
if   (   ((int)(&c1))   %   4   ==   0   )
cout   < <   "c1:Yes "   < <   endl   ;

if   (   ((int)(&c2))   %   4   ==   0   )
cout   < <   "c2:Yes "   < <   endl   ;

if   (   ((int)(&c3))   %   4   ==   0   )
cout   < <   "c3:Yes "   < <   endl   ;

if   (   ((int)(&c4))   %   4   ==   0   )
cout   < <   "c4:Yes "   < <   endl   ;

if   (   ((int)(&c5))   %   4   ==   0   )
cout   < <   "c5:Yes "   < <   endl   ;

cout   < <   (int)(&c1)   < <   endl   //   输出四个字符所在的地址(输出结果都是   4   的倍数)
  < <   (int)(&c2)   < <   endl  
  < <   (int)(&c3)   < <   endl  
  < <   (int)(&c4)   < <   endl  
  < <   (int)(&c5)   < <   endl   ;
}
-----------------------------
上面的执行结果在VC下运行都是   4   的倍数
--------------

-->   问题1:连栈上分配的空间地址都是   4   的倍数,那就说明系统分配的空间都是   4   的倍数吧???

-->   问题2:如果万一,如果放一个对象的地址不是4的倍数,那么会出现什么情况??可以给简单说一下吗?

-->   问题3:地址对齐的通用性???
      -------------
      程序1:
Class   C1
{
int   i   ;
char   c   ;
}   ;
cout   < <   sizeof(C1)   < <   endl   ; //   输出结果:   8   (是   4   的倍数)
      程序2:
class   C2
{
char   c1   ;
char   c2   ;
}   ;
cout   < <   sizeof(C2)   < <   endl   ; //   输出结果:2   (   上一个中char类型也给了4个字节,怎么这个地方都给了一个字节??)
-->   问题4:由上面的程序2   引出下面的程序
class   C2 //   sizeof(C2)   =2   ,在VC实验下的结果,不是   4
{
char   c1   ;
char   c2   ;
}   ;
//----------用placement   new方法建立对象----------------
void   *ptr   =   operator   new(100)   ; //   分配内存
C2   *POINTER   =   (C2*)ptr   ; //   类型转换
String   *str1   =   new   (POINTER)   C2()   ; //   建立一C2对象
String   *str2   =   new   (POINTER+1)   C2()   ; //   再建立一个对象
String   *str3   =   new   (POINTER+2)   C2()   ; //   再建立一个对象

cout   < <   (int)(str1)   < <   endl //   结果:3608720 (     是4的倍数)