C内存申请函数
来源:互联网 发布:淘宝卖家激活淘小铺 编辑:程序博客网 时间:2024/04/30 05:25
C语言跟内存申请相关的函数主要有 alloca、calloc、malloc、free、realloc。
alloca是向栈申请内存,无需释放。
malloc分配的内存是位于堆中的,并且没有初始化内存的内容,因此基本上malloc之后都会调用函数memset来初始化这部分的内存空间(大于128K时,使用mmap函数分配在文件映射区)。malloc()函数有一个参数,即要分配的内存空间的大小, Void *malloc(size_t size);
calloc申请并初始化这部分的内存为0。calloc()函数有两个参数,分别为元素的数目和每个元素的大小,这两个参数的乘积就是要分配的内存空间的大小,void *calloc(size_t numElements,size_t sizeOfElement)。 calloc() 函数会将所分配的内存空间中的每一位都初始化为零,也就是说,如果你是为字符类型或整数类型的元素分配内存,那么这些元素将保证会被初始化为零;如果你是为指针类型的元素分配内存,那么这些元素通常(但无法保证)会被初始化为空指针;如果你是为实数类型的元素分配内存,那么这些元素可能(只在某些计算机中)会被初始化为浮点型的零。
realloc是对malloc申请的内存进行大小的调整,申请的内存最终需要通过函数free来释放。
malloc() 函数和calloc ()函数的另一点区别是calloc()函数会返回一个由某种对象组成的数组,但malloc()函数只返回一个对象。为了明确是为一个数组分配内存空间,有些程序员会选用calloc()函数。但是,除了是否初始化所分配的内存空间这一点之外,绝大多数程序员认为以下两种函数调用方式没有区别:calloc(numElements ,sizeOfElement); malloc(numElements *sizeOfElement) ; 需要解释的一点是,理论上(按照ANSIC标准)指针的算术运算只能在一个指定的数组中进行,但是在实践中,即使C编译程序或翻译器遵循这种规定,许多C程序还是冲破了这种限制。因此,尽管malloc()函数并不能返回一个数组,它所分配的内存空间仍然能供一个数组使用(对realloc()函数来说同样如此,尽管它也不能返回一个数组)。
- C内存申请函数
- C申请内存函数
- c 内存申请释放函数小结
- 申请内存的函数
- 内存申请函数
- 函数动态申请内存
- c 局部申请内存
- C内存申请释放
- C指针申请内存
- C语言申请内存
- C和C++中的动态申请内存函数
- C中用户空间申请内存的函数!!!!!
- C语言中常用的几个内存申请函数
- C语言 结构体指针需要申请内存但函数定义指针不需要申请
- 外部函数中申请内存
- request_mem_region 申请内存函数讲解
- inux内核申请内存函数
- request_mem_region 申请内存函数讲解
- java实现交换排序
- C++学习3
- cmd显示utf8中文
- java5中为多线程提供的同步工具类
- 多线程的那点儿事
- C内存申请函数
- POJ 2993 Emag eht htiw Em Pleh
- 工厂方法模式
- Drupal7_12: 修改footer
- C# XOR CRC16 校验码计算类
- MFC关于文件查找与读写
- Hibernate学习笔记二
- c#,vb.net 中datagridview绑定datatable
- PC安卓模拟器PANIC: Could not open:C:\Documents and Settings\Administrator\.android/avd/my_avd.ini解决方案