如果一个类中有一数组(1024字节),而这个类在堆上被分配,请问类中数组是在栈上还是在堆上被分配的?

解决方案 »

  1.   

    没有new  就是在栈上  
    有new  就是堆上 
      

  2.   

    对象如果是new出来的  这个1024的数组就在堆上  
    不是new出来的  就在栈上 
      

  3.   

    那么下面这两个类在分配空间上有区别吗
    class CTest
    {
    public:
         char buf[1024];
    };class CTest2
    {
    public:
        CTest2() { buf=new char[1024]; }
        char * buf;
    };void fun()
    {
        CTest * p1=new CTest;
        CTest2 * p2=new CTest2;
    };
      

  4.   

    有区别,第二个对象他的程序是一个指向char的指针,占4个字节。在类的构造函数中再分配内存。
    第一个对象在分配时,就会分配1024空间(对象自身包含1024的空间)。
    你用new来建立对象,他们都分配在堆里。