您身边的网站建设专家
成功案例

【建站服务】石家庄企业网站设计 - 石家庄高端网站定制 - 石家庄品牌网站搭建 - 上往建站-域名申请

日期: 2022-09-21 02:19:23 浏览数:8


上往建站提供服务器空间服务商百度快照排名网站托管百度推广运营,致力于设计外包服务与源代码定制开发360推广搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。


石家庄企业网站设计 - 石家庄高端网站定制 - 石家庄品牌网站搭建 - 上往建站

网站建设.png


三维数组测试实例:


实例

#include <iostream>

using namespace std;

 

int main()

{   

    int i,j,k;   // p[2][3][4]

    

    int ***p;

    p = new int **[2]; 

    for(i=0; i<2; i++) 

    { 

        p[i]=new int *[3]; 

        for(j=0; j<3; j++) 

            p[i][j]=new int[4]; 

    }

    

    //输出 p[i][j][k] 三维数据

    for(i=0; i<2; i++)   

    {

        for(j=0; j<3; j++)   

        { 

            for(k=0;k<4;k++)

            { 

                p[i][j][k]=i+j+k;

                cout<<p[i][j][k]<<" ";

            }

            cout<<endl;

        }

        cout<<endl;

    }

    

    // 释放内存

    for(i=0; i<2; i++) 

    {

        for(j=0; j<3; j++) 

        {   

            delete [] p[i][j];   

        }   

    }       

    for(i=0; i<2; i++)   

    {       

        delete [] p[i];   

    }   

    delete [] p;  

    return 0;

}

对象的动态内存分配

对象与简单的数据类型没有什么不同。例如,请看下面的代码,我们将使用一个对象数组来理清这一概念:


实例

#include <iostream>

using namespace std;

 

class Box

{

   public:

      Box() { 

         cout << "调用构造函数!" <<endl; 

      }

      ~Box() { 

         cout << "调用析构函数!" <<endl; 

      }

};

 

int main( )

{

   Box* myBoxArray = new Box[4];

 

   delete [] myBoxArray; // 删除数组

   return 0;

}

如果要为一个包含四个 Box 对象的数组分配内存,构造函数将被调用 4 次,同样地,当删除这些对象时,析构函数也将被调用相同的次数(4次)。


当上面的代码被编译和执行时,它会产生下列结果:


调用构造函数!

调用构造函数!

调用构造函数!

调用构造函数!

调用析构函数!

调用析构函数!

调用析构函数!

调用析构函数!

delete 与 delete[] 区别:

1、针对简单类型 使用 new 分配后的不管是数组还是非数组形式内存空间用两种方式均可 如:

int *a = new int[10];   delete a;   delete [] a;

此种情况中的释放效果相同,原因在于:分配简单类型内存时,内存大小已经确定,系统可以记忆并且进行管理,在析构时,系统并不会调用析构函数, 它直接通过指针可以获取实际分配的内存空间,哪怕是一个数组内存空间(在分配过程中 系统会记录分配内存的大小等信息,此信息保存在结构体_CrtMemBlockHeader中, 具体情况可参看VC安装目录下CRTSRCDBGDEL.cpp)

2、针对类Class,两种方式体现出具体差异

当你通过下列方式分配一个类对象数组:

class A{
    private:
        char *m_cBuffer;
        int m_nLen;
    public:
        A(){ m_cBuffer = new char[m_nLen]; }
        ~A() { delete [] m_cBuffer; }};A *a = new A[10];// 仅释放了a指针指向的全部内存空间 但是只调用了a[0]对象的析构函数 剩下的从a[1]到a[9]这9个用户自行分配的m_cBuffer对应内存空间将不能释放 从而造成内存泄漏delete a;// 调用使用类对象的析构函数释放用户自己分配内存空间并且   释放了a指针指向的全部内存空间delete [] a;


石家庄企业网站设计 - 石家庄高端网站定制 - 石家庄品牌网站搭建 - 上往建站


上往建站提供搭建网站域名注册官网备案服务网店详情页设计企业网店专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管网页美工排版,致力于域名申请竞价托管软文推广全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机网站推广百度竞价托管网站建设上网建站推广服务网络公司有哪些等业务,专业团队服务,效果好。

服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)


全国咨询热线:400-111-6878

地址:全国各地都有驻点商务

Copyright © 2021 通陆科技

网站建设上往建站