动态分配和释放:
动态构造一维数组
假设动态构造一个int型数组
int*p=(int *)malloc (int length);
1. malloc只有一个int型的形参表示要求系统分配的字节数。
2. malloc函数的功能是请求系统length个字节的内存空间,malloc ()动态分配如果请求分配成功,则返回第一个字节的地址,如果分配不成功则返回NULL
3.malloc函数能且只能返回第一个字节的地址,所以我们需要把这个无实际意义的第一个字节的地址(俗称干地址)转化为一个有实际意义的地址,malloc前面必须加(数据类型 *), 表示把这个无实际意义的第一个字节的地址转换为相应类型的地址。如:
int *p=(int *)malloc (50);
表示将系统分配好的50个字节的第一个字节的地址转化为int型地址,更准确的说是把一个字节的地址转化为四个字节的地址,这样p就指向了第一个的四个字节,p+1就指向了第2个的4个字节,p+i就指向了第i+1个的4个字节。p[0]就是第一个元素,p[i]就是第ⅰ+1个元素。
free(p)
释放p所指向的内存,而不是释放p本身所占用的内存。