mallo函数
malloc的全称是memory allocation,中文叫动态内存分配,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存。原型为extern void *malloc(unsigned int num_bytes)。
1函数简介
原型
头文件
功能
返回值
说明
名称解释
相关函数
2函数声明
全名
备注
3与new的区别
int*p;p=newint;//返回类型为int*类型(整数型指针),分配大小为sizeof(int); |
int*parr;parr=newint[100];//返回类型为int*类型(整数型指针),分配大小为sizeof(int)*100; |
int*p;p=(int*)malloc(sizeof(int)*128);//分配128个(可根据实际需要替换该数值)整型存储单元,//并将这128个连续的整型存储单元的首地址存储到指针变量p中double*pd=(double*)malloc(sizeof(double)*12);//分配12个double型存储单元,//并将首地址存储到指针变量pd中 |
type*p;if(NULL==(p=(type*)malloc(sizeof(type))))/*请使用if来判断,这是有必要的*/{perror("error...");exit(1);}.../*其它代码*/free(p);p=NULL;/*请加上这句*/ |
int*p=(int*)malloc(sizeof(int)*100);//分配可以放得下100个整数的内存空间。 |
char*ptr;if((ptr=(char*)malloc(0))==NULL)puts("Gotanullpointer");elseputs("Gotavalidpointer"); |
4工作机制
5程序示例
正常程序
typedefstructdata_type{intage;charname[20];}data;data*bob=NULL;bob=(data*)malloc(sizeof(data));if(bob!=NULL){bob->age=22;strcpy(bob->name,"Robert");printf("%sis%dyearsold\n",bob->name,bob->age);}else{printf("mallocerror!\n");exit(-1);}free(bob);bob=NULL; |
内存泄漏实例
例1:#include<stdio.h>#include<malloc.h>#defineMAX100000000intmain(void){int*a[MAX]={NULL};inti;for(i=0;i<MAX;i++){a[i]=(int*)malloc(MAX);}return0;} |
#include"stdio.h"#include"malloc.h"//malloc()函数被包含在malloc.h里面intmain(void){char*a=NULL;//声明一个指向a的char*类型的指针a=(char*)malloc(100*sizeof(char));//使用malloc分配内存的首地址,然后赋值给aif(!a)//如果malloc失败,可以得到一些log{perror("malloc");return-1;}sprintf(a,"%s","HelloWorld\n");//"HelloWorld\n"写入a指向的地址printf("%s\n",a);//输出用户输入的数据free(a);//释放掉使用的内存地址return0;//例2有无内存泄露?}===============================例1:对malloc申请之后没有检测返回值;例2:检测malloc返回值条件有误。 |
mallo函数的更多相关文章
- C/C++语言的标准库函数malloc/free与运算符new/delete的区别
概括地说 1.malloc与free是C++/C的标准库函数,new/delete是C++的运算符,它们都可用于申请动态内存和释放内存. 2.对于非内部数据类型的对象而言,只用malloc/free无 ...
- C++/C语言的标准库函数与运算符的区别new/delete malloc/free
malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符.它们都可用于申请动态内存和释放内存.下面来看他们的区别. 一.操作对象有所不同 malloc与free是C++ ...
- 关于malloc/free用法
和很多人一样,我一直觉得new/delete和malloc/free的用法很随意,直到我真正遇到了麻烦,才想着去好好区分一下. (1)首先mallo函数原型void* malloc(size_t).头 ...
- Python 小而美的函数
python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况 any any(iterable) ...
- 探究javascript对象和数组的异同,及函数变量缓存技巧
javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...
- JavaScript权威指南 - 函数
函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ...
- C++对C的函数拓展
一,内联函数 1.内联函数的概念 C++中的const常量可以用来代替宏常数的定义,例如:用const int a = 10来替换# define a 10.那么C++中是否有什么解决方案来替代宏代码 ...
- 菜鸟Python学习笔记第一天:关于一些函数库的使用
2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...
- javascript中的this与函数讲解
前言 javascript中没有块级作用域(es6以前),javascript中作用域分为函数作用域和全局作用域.并且,大家可以认为全局作用域其实就是Window函数的函数作用域,我们编写的js代码, ...
随机推荐
- nsurl 测试ATS
LIPEIdeMacBook-Air:~ lipei$ nscurl --ats-diagnostics https://xxxxx.com/ Starting ATS Diagnostics Con ...
- iOS,图片处理
1.旋转图片 2.缩放图片 3.截取图片指定区域 4.祛除图片白色背景,弄成透明png 5.将UIView转化为UIImage,并转化为data和base64 6.将视频一帧(CMSampleBuff ...
- RDIFramework.NET ━ 9.16 案例模块━ Web部分
RDIFramework.NET ━ .NET快速信息化系统开发框架 9.15 案例模块 -Web部分 9.16.1.产品管理模块 产品管理模块提供了基本的增.删.改.查.导出.分页等的实现,用户可 ...
- oracle生成主键
SELECT 'ZTO'||TO_CHAR(SYSDATE,'yymmdd')||TO_CHAR(SEQ_COMMON_ORDER.NEXTVAL,'FM00000000') AS orderCode ...
- http协议 301和302的原理及实现
一.来看看官方的说法: 301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于: 301 redirect: 301 代表永久性转移(Permanently Moved) ...
- sdutoj 2605 A^X mod P
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2605 A^X mod P Time Limit ...
- PHP之十六个魔术方法详解
https://segmentfault.com/a/1190000007250604#articleHeader14
- 夺命雷公狗-----React---11--添加css样式的方法
<!DOCTYPE> <html> <head> <meta charset="utf-8"> <title></ ...
- [3] 智能指针std::auto_ptr
[1]std::auto_ptr 对于编译器来说,智能指针实质是一个栈对象,而并非指针类型. 智能指针通过构造函数获取堆内存的管理所有权,而在其生命期结束时,再通过析构函数释放由它所管理的堆内存. 所 ...
- svn使用方法介绍(1)
TotoiseSVN的基本使用方法 在 项目管理实践教程一.工欲善其事,必先利其器[Basic Tools]中,我已经讲解了怎样安装TortoiseSVN.在上面的讲解中已经讲了怎么使用VisualS ...