常见内存分配函数

原创 2016年08月30日 20:08:23

常见内存分配函数


1 . kmalloc 内核函数

#include <linux/slab.h> 
void *kmalloc(size_t size, int flags);//最大为 128k
void kfree(void *ptr);

kmalloc分配一块物理空间和虚拟空间都连续,大小为size的内存。
常用的flags标志有:
GFP_ATOMIC
用来从中断处理和进程上下文之外的其他代码中分配内存. 从不睡眠.
GFP_KERNEL
内核内存的正常分配. 可能睡眠.最常用的,(内部最终调用 __get_free_pages)
GFP_USER
用来为用户空间页来分配内存; 它可能睡眠.
例如: P=(int*)kmalloc(n*sizeof(int),GFP_KERNEL);//返回值是一个指向内存开始的指针


2 . kzalloc 内核函数

#include <linux/slab.h>
void *kzalloc(size_t size, gfp_t flags);
void kfree(void *ptr);

用kzalloc申请内存的时候,效果相当于先是用 kmalloc()申请空间,然后用 memset(0) 来初始化。
参数参考kmalloc();


3 . vmalloc 内核函数

#include <linux/vmalloc.h> 
void *vmalloc(unsigned long size);
void vfree(void * addr);

vmalloc 在虚拟内存空间分配一块较大的连续内存区(虚拟内存空间连续,物理内存不一定连续)
函数可能引起睡眠,中断中最好不采用该函数分配内存。

4 . __get_free_page 内核函数

#include <linux/gfp.h>
 __get_free_page(unsigned long int gfp_mask);//(内部调用 __get_free_pages)

申请一块物理和虚拟内存都连续的内存。


5 . malloc 用户空间函数

#include <stdlib.h>
void *malloc(size_t size);//单位 bytes
 void free(void *ptr);

malloc是动态分配一块连续的内存,malloc()的参数是一个指定所需字节数的整数,
内存没有被初始化。
例如:P=(int*)malloc(n*sizeof(int));//返回值是一个指向内存开始的指针

6 . calloc 用户空间函数

#include <linux/slab.h> 
 void *calloc(size_t nmemb, size_t size);//单位 bytes
  void free(void *ptr);

calloc和malloc使用相似,主要的区别是分配内存初始化默认值为0。
colloc需要两个参数,第一个是需要分配内存的变量的个数,第二个是每个变量的大小.
例如:P=(int*)calloc(n,sizeof(int));
//返回值是一个数组指针,p[1]~p[n],每一个指针指向小块内存的首地址

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Linux常见内存分配函数

  • 2014-02-21 20:17
  • 134KB
  • 下载

Linux内核中常见内存分配函数

1.      原理说明 Linux内核中采用了一种同时适用于32位和64位系统的内存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系统中,用到了四级页表,如图2-1所示。四级页表...

Linux内核中常见内存分配函数

1.      原理说明 Linux内核中采用了一种同时适用于32位和64位系统的内存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系统中,用到了四级页表,如图2-1所示。四级页表...

Linux内核中常见内存分配函数

Linux内核中采 用了一种同时适用于32位和64位系统的内 存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系 统中,用到了四级页表

常见的Linux内核中内存分配函数

常见的Linux内核中内存分配函数1.原理说明  Linux内核中采 用了一种同时适用于32位和64位系统的内 存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系 统中,用到了四级页...

Linux内核中常见内存分配函数(三)

Linux内核中常见内存分配函数(三)

常见的Linux内核中内存分配函数

1.原理说明   Linux内核中采 用了一种同时适用于32位和64位系统的内 存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系 统中,用到了四级页表,如图2-1所示。四级页表分...

linux c内存分配函数介绍

  • 2013-08-20 11:40
  • 24KB
  • 下载

C内存分配管理函数

  • 2011-11-23 23:30
  • 227KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)