这段时间使用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;
}
近期评论