C/C++动态二维数组的内存分配和释放_C/C++_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > C/C++ > C/C++动态二维数组的内存分配和释放

C/C++动态二维数组的内存分配和释放

 2014/8/11 14:51:55  lizhenqi19890218  程序员俱乐部  我要评论(0)
  • 摘要:C语言[cpp]viewplaincopy//二维数组动态数组分配和释放//数组指针的内存分配和释放//方法一char(*a)[N];//指向数组的指针a=(char(*)[N])malloc(sizeof(char[N])*m);free(a);//方法二char**a;inti;a=(char**)malloc(sizeof(char*)*m);//分配指针数组for(i=0;i<m;i++)a[i]=(char*)malloc(sizeof(char)*n)
  • 标签:c++ 数组 内存分配 内存
C语言
[cpp] view plaincopy
//二维数组动态数组分配和释放 
//数组指针内存分配和释放 
//方法一 
char (*a)[N];//指向数组的指针 
a = (char (*)[N])malloc(sizeof(char [N]) * m); 
 
free(a);  
 
//方法二 
char **a; 
int i; 
a = (char **)malloc(sizeof(char *) * m);//分配指针数组 
for(i=0; i<m; i++) 
    a[i] = (char *)malloc(sizeof(char) * n);//分配每个指针所指向的数组 
 
for(i=0; i<m; i++) 
    free(a[i]); 
free(a);  
 
//方法三 
char **a; 
int i; 
a = (char **)malloc(sizeof(char *) * m);//分配指针数组 
a[0] = (char *)malloc(sizeof(char) * m * n);//一次性分配所有空间 
for(i=1; i<m; i++) 
    a[i] = a[i-1] + n; 
 
free(a[0]); 
free(a);  
 
 
//指针数组的内存分配和释放 
//方法一 
char* a[M];//指针的数组 
int i; 
for(i=0; i<M; i++) 
    a[i] = (char *)malloc(sizeof(char) * n); 
 
for(i=0; i<M; i++) 
    free(a[i]);  
 
//方法二 
char* a[M];//指针的数组 
int i; 
a[0] = (char *)malloc(sizeof(char) * M * n); 
for(i=1; i<M; i++) 
    a[i] = a[i-1] + n; 
 
free(a[0]);  

C++
[cpp] view plaincopy
//二维数组动态数组分配和释放 
//数组指针的内存分配和释放 
//方法一 
char (*a)[N];//指向数组的指针 
a = new char[m][N]; 
 
delete[] a;  
 
//方法二 
char **a; 
a = new char* [m];//分配指针数组 
for(int i=0; i<m; i++) 
    a[i] = new char[n];//分配每个指针所指向的数组 
 
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[n]; 
 
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]; 


注意:
new和delete要注意配对使用,即有多少个new就有多少个delete,这样才可以避免内存泄漏!



来源:http://blog.csdn.net/huazhigang/article/details/11745551
发表评论
用户名: 匿名