c pointer

指针相关


1.** glibc detected ** ./19: munmap_chunk(): invalid pointer: 0x00007ffff5cc97b0 ***

 a) free释放内存出现,注意free只能释放malloc分配的内存,在function中看到是指针,这个指针有可能是定义的数组,无法释放

2. 二维数组和指针的指针区别( type [][]与 type **)

  虽然两种方式在使用的时候访问方式是通用的,差异主要在内存组织

  二维数组是一个连续的区域,如char a[2][3] 实际上是一个连续的sizeof(char)*2*3的内存区域。在变量定义时候已经确立整数组存储数据集合容纳数据大小,
  并且没一行数据的个数必须一样,无法扩容;


  指针指针是是通过先分配type * 来存储二维数组中一维,然后在分配type 来维持二维数组二维。存储数据集合和动态调整,没一行的个数可以不同。

eg:内存组织图,type标识数据类型

内存组织图

articles from reage blog -- http://www.ireage.com