malloc和free不是系统调用,而是库函数。因此,malloc和free管理的不是内核内存,而只是用户内存,严格地说,是操作系统给用户进程分配的堆内存。
但是,用户进程的堆内存也不是固定不变的。虽说对32位机的Linux的进程来说,最大的可访问地址为4G(2的32次方),但是内核并非一开始就赋予某个进程4G地址空间的使用权。因此,用户进程的堆内存也是要向内核申请的。
malloc函数可以看做对用户进程申请到的堆内存的分配,而free函数可以看做对用户进程申请到的堆内存的回收。
malloc和free不是系统调用,而是库函数。因此,malloc和free管理的不是内核内存,而只是用户内存,严格地说,是操作系统给用户进程分配的堆内存。
但是,用户进程的堆内存也不是固定不变的。虽说对32位机的Linux的进程来说,最大的可访问地址为4G(2的32次方),但是内核并非一开始就赋予某个进程4G地址空间的使用权。因此,用户进程的堆内存也是要向内核申请的。
malloc函数可以看做对用户进程申请到的堆内存的分配,而free函数可以看做对用户进程申请到的堆内存的回收。