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代码, ...
随机推荐
- stty--设置终端线
stty - chang and print terminal line settings SYNOPSIS stty [-F DEVICE | --file=DEVICE] [SETTING]... ...
- SQL Server错误与事务处理
T-SQL中出现的错误,依据和事务的关系,可以分为两种情况: 有的错误会导致发生错误位置之后的代码不再执行,如果错误位置在事务中,该事务也会自动回滚(即在错误位置之后的rollback语句不会执行,但 ...
- Leetcode: Partition Equal Subset Sum
Given a non-empty array containing only positive integers, find if the array can be partitioned into ...
- W3cshool之JavaScript基础
1. JavaScript 对大小写敏感 名为 "myfunction"的函数和名为 "myFunction" 的函数是两个不同的函数,同样,变量 & ...
- 夺命雷公狗-----React---2--组建
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- POJ - 1245 Programmer, Rank Thyself
POJ - 1245 Programmer, Rank Thyself Time Limit: 1000MS Memory Limit: 10000KB 64bit IO Format: %I64d ...
- js计时器方法 setInterval(),setTimeout()
window.setInterval() 周期性地调用一个函数(function)或者执行一段代码. var intervalID = window.setInterval(func, delay[, ...
- <Interview problem>二进制加法
闲来无事,搜集一些有趣的面试题,以及解决方案,有些代码可能会自己写, 有些网上有比较完整的方案了,就直接把代码拷贝过来,描述一下解题思路. Given two binary strings, retu ...
- vs2010下编译osip2和eXosip2的4.0.0版的静态库及搭建开发环境
转载于:http://blog.csdn.net/lbc2100/article/details/48293911 本文为参考网上的动态库的方式,进行静态库的实现,在此对动态库的作者表示感谢. 第一步 ...
- 关于</div>的粗浅理解
</div>作为c#中常用的一个标签,在写多个区域的内容时有着十分重要的作用.如果写简单的网页时不用div可能感受不到太大的影响,但是在写较为复杂的程序时div的分隔作用就很明显了,改动大 ...