这段时间使用C++遇到需要使用变长数组的情况。在网上虽然找到了能够在使用时自定义数组长度功能的代码,但是没有真正实现变长数组的“变长”功能。

    怎么说没能够真正实现变长数组的“变长”功能呢?就是真正设置数组长度的是第一次输入的数组长度的值,而其他时候使用的不过是在第一次申请的空间内操作了,一旦比第一次申请的空间大了,就会出现内存泄露。——这样的问题一直困扰着我好几天。

补充:据说使用容器类Vector更加适合于设置变长数组。

/////////////////////////////////////////////////////////////////
//程序名:    变长数组的多次设置
//作者:    pcMingStudio
//时间:    2008-10-29
//功能:    多次设置变长数组的长度,以达到变长数组的“变长”功能
/////////////////////////////////////////////////////////////////

#include<iostream.h>

int *p;//你可以放于全局或者局部变量的位置

void main()
{
    int len,i;

    //*********************
    //第1次设置变长数组长度
    cin>>len;
    //用指针p指向new动态分配的长度为len*sizeof(int)的内存空间
    p=new int[len];
    for(i=0;i<len;i++)
    {
        p[i] = i;
        cout<<“p[“<<i<<“] ‘s value is “<<p[i]<<”  数组首地址  “<<p<<endl;
    }
    delete[] p;//注意:必须释放空间,否则导致内存泄露!
                    //P首地址也因没有回收空间发生改变

    //*********************
    //第2次设置变长数组长度
    cin>>len;
    p=new int[len];
    for(i=0;i<len;i++)
    {
        p[i] = i;
        cout<<“p[“<<i<<“] ‘s value is “<<p[i]<<”  数组首地址  “<<p<<endl;
    }
    delete[] p;//注意:必须释放空间,否则导致内存泄露!
                    //P首地址也因没有回收空间发生改变

    //*********************
    //第3次设置变长数组长度
    cin>>len;
    p=new int[len];
    for(i=0;i<len;i++)
    {
        p[i] = i;
        cout<<“p[“<<i<<“] ‘s value is “<<p[i]<<”  数组首地址  “<<p<<endl;
    }
    delete[] p;
}