动态数组创建总结_201307301617

 一维动态数组的创建

#include <stdio.h>
#include <malloc.h>
int main()
{
int n;
int *shzu
scanf(“%d”, &n);
shzu= (int *) malloc(sizeof(int) * n);
… …
free(shzu);
return 0;
}
 
动态创建和释放二维数组
 

C动态创建和释放二维数组

#include<stdio.h>
#include<stdlib.h> 
//  或用头文件include <malloc>
#define ROW 5
#define COL 4
 
main(){
    int i; 
    int **arr;
    arr=(int **)malloc(ROW*sizeof(int*));
    for(i=0;i<ROW;++i)
        arr[i]=(int*)malloc(COL*sizeof(int));
      
    printf("%d ",arr[ROW-1][COL-1]); 
      
    for(i=0;i<ROW;++i)
        free(arr[i]);
    free(arr);
}

使用calloc申请内存时,内存会清0,而malloc并不进行这项工作,所以打印数组元素时得到的随机值。

可以用valgrind工具验证确实没有发生内存泄露:

 valgrind --tool=memcheck --leak-check=full ./exefile

但是有errors:

就是因为我们没有给arr[ROW-1][COL-1]赋值就是读取其内容。

 
原文地址:https://www.cnblogs.com/xl1027515989/p/3225434.html