1、malloc()和free()
void * malloc(long NumBytes); //从堆的链表中上分配NumBytes个字节的内存
@return:分配成功则返回指向该内存块的指针;分配失败则返回一个空值(NULL)
分配失败的原因:内存不足(一般不可能);当前malloc试图分配一块被破坏的内存,即当前malloc之前可能存在指针越界。
void free(void *pAlloc);//将之前用malloc/cealloc等分配的控件还给操作系统,将这块内存加入到堆链表中,可重新被分配。
2、realloc
void *realloc(void *ptr, size_t new_size);//ptr:Pointer to previously allocated memory block.(指向原内存块的指针); new_size:New size in bytes(新的内存大小)
@return:NULL:new_size为0且有足够空间待扩展;new_size不为0但没有足够的待扩展空间;
ptr:返回原指针(原指针指向的内存之后有空间待扩展)
new_ptr:返回新指针(重新找一块内存分配给新指针,将原内存块的内容拷贝到新内存中,并free掉原内存块)
realloc经常会遇到失败的情况:多半原因是由于待扩展指针在使用时出现越界情况!
注:以上内容为本人实际应用中总结,如有不妥之处,烦请指出!