动态分配内存函数——calloc,free,malloc,realloc
2016-03-02 23:23
351 查看
头文件:#include “stdlib.h”
void*calloc(size_t num,size_t size);
void *malloc(size_t num);
void *realloc(void *old, size_t new_size);
void *alloca(size_t size);
来自博客:/article/8511246.html
同样的有百度上面的解释:
1函数名称: calloc
函数原型: void * calloc(unsigned n,unsign size);
函数功能: 分配n个数据项的内存连续空间,每个数据项的大小为size
函数返回: 分配内存单元的起始地址,如果不成功,返回0
2函数名称: free
函数原型: void free(void* p);
函数功能: 释放p所指的内存区
函数返回:
参数说明: p-被释放的指针
3函数名称: malloc
函数原型: void * malloc(unsigned size);
函数功能: 分配size字节的存储区
函数返回: 所分配的内存区地址,如果内存不够,返回0
4函数名称: realloc
函数原型: void * realloc(void * p,unsigned size);
函数功能: 将p所指出的已分配内存区的大小改为size,size可以比原来分配的空间大或小
函数返回: 返回指向该内存区的指针.NULL-分配失败
void*calloc(size_t num,size_t size);
功能:num是请求分配的单元个数,size是每个单元的大小,如果成功则返回一个内存指针,指向一块内存,并且和malloc不同的是:这块内存已经被清零了!失败返回NULL。 例子:int *p=(int *)calloc(4,sizeof(int)); 请求分配4个int大小的清零了的内存空间,相当于使用了 int *p=malloc(sizeof(int)*4); memset(p,0,sizeof(int)*4);
void *malloc(size_t num);
功能:num是请求分配的内存字节数,成功则返回一个指向内存的指针,否则返回NULL。 例子:如上。
void *realloc(void *old, size_t new_size);
功能:old是原来分配的内存地址指针,new_size是请求分配的内存的新的大小,可以比原来小(但是对于数据来说不安全),也可以比原来的大。realloc会将原来内存中的内容复制到新的内存区域,然后返回新的内存指针,失败返回NULL。 例子:p=(int *)realloc(p,4*2); //将前面分配的内存扩大两倍
void *alloca(size_t size);
功能:size是请求分配的内存大小(字节),alloca函数和前面的函数都不同,前面的函数在进程的堆空间中分配内存,所以需要手动free,而alloca函数在进程的栈空间中分配内存,所以当调用alloca函数的函数执行结束时,alloca分配的内存也就自动释放。
来自博客:/article/8511246.html
同样的有百度上面的解释:
1函数名称: calloc
函数原型: void * calloc(unsigned n,unsign size);
函数功能: 分配n个数据项的内存连续空间,每个数据项的大小为size
函数返回: 分配内存单元的起始地址,如果不成功,返回0
2函数名称: free
函数原型: void free(void* p);
函数功能: 释放p所指的内存区
函数返回:
参数说明: p-被释放的指针
3函数名称: malloc
函数原型: void * malloc(unsigned size);
函数功能: 分配size字节的存储区
函数返回: 所分配的内存区地址,如果内存不够,返回0
4函数名称: realloc
函数原型: void * realloc(void * p,unsigned size);
函数功能: 将p所指出的已分配内存区的大小改为size,size可以比原来分配的空间大或小
函数返回: 返回指向该内存区的指针.NULL-分配失败
相关文章推荐
- 【C++学习之路】组合类的构造函数
- linux下安装jdk
- TMemoryStream、String与OleVariant互转
- android开发之路03
- mysql的查查查1
- (C++)保留小数点位数
- Rails学习笔记1(Active Record初探)
- POJ 2386 Lake Counting(深搜)
- Linux内核中Netfilter架构介绍http://blog.csdn.net/wuruixn/article/details/7957368
- ScrollView嵌套ViewPager滑动冲突的解决
- 监控指定进程
- levelDB跳表实现
- PHP-004
- Building microservices with Spring Cloud and Netflix OSS, part 2
- POJ 2386 Lake Counting(深搜)
- sqlite加密
- linux hosts文件的修改------利用root权限来vim /etc/hosts
- 2016-3-2
- 补一个
- 25种提高网页加载速度的方法和技巧