1.当数组被声明时,必须在编译时知道它的长度。动态内存分配允许程序为一个长度在运行时才知道的数组分配内存空间。
2.malloc和calloc函数都用于动态分配一块内存,并返回一个指定该块内存的指针。
1>malloc的参数就是需要分配的内存的字节数。
2>calloc的参数是需要分配的元素个数和每个元素的长度。calloc函数在返回前把内存初始化为零。malloc函数返回时内存并未以任何方式进行初始化。
3>调用realloc函数可以改变一块已经动态分配的内存的大小。增加内存块大小有时有可能采取的方法是把原来内存块上的所有数据复制到一个新的、更大的内存块上。当一个动态分配的内存块不再使用时,应该调用free函数把它归还给可用内存池,内存释放后便不能再被访问。
3.如果请求的内存分配失败,malloc、malloc和readlloc函数返回的将是一个NULL指针。
4.错误的访问分配内存之外的区域所引起的后果类似越界访问一个数组,但这个错误还能破坏可用内存池,导致程序失败。
5.如果一个指针不是从早先的malloc、calloc或realloc函数返回的,它是不能作为参数传递给free函数的。