动态数组创建总结_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\n",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]赋值就是读取其内容。