您的位置:首页 > 编程语言 > C语言/C++

C++动态数组分配与释放

2014-07-01 19:17 302 查看
//一维的

string *pa = new string[10];//默认构造函数进行了初始化,为空

int *pa = =new int[10];//内置类型的对象,没有进行初始化

int
*pa = =new int[10]();//初始化为0

delete [] pa;

允许动态分配空数组

size_t n = get_size();

int *p = new int
;

for (int* q = p;q !=p+n;++q)

//创建数组

//二维数组动态数组分配和释放

//数组指针的内存分配和释放

//方法一

char (*a)
;//指向数组的指针

a = new char[m]
;



delete[] a;



//方法二

char **a;

a = new char* [m];//分配指针数组

for(int i=0; i<m; i++)

a[i] = new char
;//分配每个指针所指向的数组



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

delete[] a[i];

delete[] a;





//指针数组的内存分配和释放

//方法一

char **a;

a = new char* [m];

a[0] = new char[m * n];//一次性分配所有空间

for(int i=1; i<m; i++)

a[i] = a[i-1] + n;//分配每个指针所指向的数组



delete[] a[0];

delete[] a;



//方法二

char* a[M];//指针的数组

for(int i=0; i<M; i++)

a[i] = new char
;



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

delete[] a[i];



//方法三

char* a[M];//指针的数组

a[0] = new char[M*n];

for(int i=1; i<M; i++)

a[i] = a[i-1] + n;



delete[] a[0];

转自:http://blog.csdn.net/huazhigang/article/details/11745551

动态数组的赋值:

memset

Sets buffers to a specified character.

void*memset(void*dest,intc,size_tcount);

可见memset只能作用于一个一维数组void*dest,因此最好的办法就是和二维数组的动态分配结合起来,new一个,memset一个。具体写法如下:

int **array;

array=new int *[10];

for(int i=0;i<10;i++)

{

array[i]=new int [5];

memset(array[i],0,5*sizeof(int));

}
转自http://hi.baidu.com/jian_fei_yang/item/cf49006f5d53620aa0cf0ffe
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: