动态内存

malloc/free

void * malloc(size_t num)

void free(void *p)

malloc函数只关心申请的内存的大小。

malloc申请到的是一块连续的内存,有时可能会比所申请的空间大。其有时会申请不到内存,返回NULL。

malloc返回值的类型是void *,所以在调用malloc时要显式地进行类型转换,将void * 转换成所需要的指针类型。

 

释放一块内存中的一部分是不被允许的。 不允许重复释放。

 

 

ree(p)是释放p所指的空间,而不是释放p本身的空间。释放堆空间后,p成了野指针。

malloc与free是配对使用的, free只能释放堆空间。

如果malloc返回的指针值丢失,则所分配的堆空间无法回收,称内存泄漏,同一空间重复释放也是危险的,因为该空间可能已另分配,所以必须妥善保存malloc返回的指针,以保证不发生内存泄漏,也必须保证不会重复释放堆内存空间。

posted @ 2022-12-25 13:16  cnetsa  阅读(28)  评论(0)    收藏  举报