注意动态分配地址不连续问题
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int **a; a=(int**)malloc(10*sizeof(int*)); int i,j; for(i=0;i<10;i++) { a[i]=(int*)malloc(10*sizeof(int)); } for(i=0;i<10;i++) { for(j=0;j<10;j++) { a[i][j]=0; } } printf("%p %p %p %p %p",&a,a,&a[0],a[0],&a[0][0]); for(i=0;i<10;i++){ free(a[i]); a[i]=NULL; } free(a); a=NULL; return 0; }
上耿大爷的内存分析