我知道使用calloc()
andmalloc()
将在堆上分配特定数量的内存并返回一个指向分配开头的指针。
我也知道这free( poinerVar)
将取消分配(释放分配的内存)。但是,我无法想象 free() 如何知道要取消分配的内存量。诸如 C#、Java 之类的托管语言会跟踪它的垃圾回收对象,但 C 肯定不会(据我所知)。
在内存管理级别发生了什么,它允许使用 free 取消分配内存并仅将指针变量传递给它。
我知道使用calloc()
andmalloc()
将在堆上分配特定数量的内存并返回一个指向分配开头的指针。
我也知道这free( poinerVar)
将取消分配(释放分配的内存)。但是,我无法想象 free() 如何知道要取消分配的内存量。诸如 C#、Java 之类的托管语言会跟踪它的垃圾回收对象,但 C 肯定不会(据我所知)。
在内存管理级别发生了什么,它允许使用 free 取消分配内存并仅将指针变量传递给它。