内存分配malloc函数注意事项。
来源:互联网 发布:会计课程 知乎 编辑:程序博客网 时间:2024/05/21 13:19
malloc的全称是memory allocation,中文叫动态内存分配,用于向系统申请分配指定字节的内存空间
原型:extern void *malloc(unsigned int num_bytes);
看原型很头疼,来两个例子:
int* p; p = (int *) malloc (sizeof(int)*128);//分配128个整型存储单元
double *pd=(double *) malloc (sizeof(double)*12);//分配12个double型存储单元
通过这2个声明可以看出malloc的用法:
又是指针。malloc函数返回值类型为void *,但void* 类型可以强制转换为任何其它类型的指针。相当于malloc可以返回任何类型的指针。
几乎只要用到malloc的地方就要用到强制转换,因为应该没人会用一个void类型处理实际数据吧。
几乎只要用到malloc的地方就要用到sizeof(),这个不用解释。
即: 类型 *指针=(类型*) malloc ( sizeof(类型) );
这个原型看起来容易多了。
需注意的问题:
用malloc动态申请内存块时,最好进行返回值的判断。
分配失败返回空指针NULL。
内存不再使用时,应使用free()函数将内存块释放。
建议养成强制转换的习惯。
malloc 和 new 不同:
new 返回指定类型的指针,并且可以自动计算所需要大小。
malloc 则必须要由我们计算字节数,并且在返回后强行转换为实际类型的指针。
例3:
struct stu *pb;pb=(struct stu *)malloc(sizeof(struct stu));
套用上面的公式,我们可以方便的写出自己的例子,例3先定义一个结构体指针pb,再分配一个结构体大小的内存空间,并把首地址赋给pb;
当我们使用链表时,用malloc分配空间将会非常实用。
<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- 内存分配malloc函数注意事项。
- 内存分配函数 _alloc/malloc/calloc
- 内存分配函数:realloc、malloc、calloc不同
- 自己动手写内存分配函数malloc
- 动态内存分配函数malloc,calloc,realloc
- 内存分配函数 :malloc,calloc,realloc
- 内存分配函数 _alloc/malloc/calloc
- malloc函数能分配多少内存
- malloc等分配内存函数探究
- 动态内存分配(malloc函数)
- 内存分配函数malloc calloc realloc
- 动态内存分配 malloc,free 函数分析
- 关于Malloc内存分配函数的解析
- malloc free内存分配
- malloc内存分配机制
- malloc内存分配
- malloc内存分配
- c malloc分配内存
- metasploit之db_nmap
- Codeforces 193 Div 2
- YUV420图像格式
- hdu4185(二分图+最大匹配)
- UVA 10061 How many zeros and how many digits?
- 内存分配malloc函数注意事项。
- socket简单例子
- python VS java 摘自http://www.ej38.com/showinfo/Python-209370.html
- metasploit之hosts
- JDBC为什么要使用PreparedStatement而不是Statement
- C#读取excel中的数据
- HDU 3572 Task Schedule 建图+sap模板
- 第三章数程序设计初步--控制结构综合项目1-1百钱买百鸡
- 利用虚拟机安装swift