malloc的全称是memory allocation,中文叫动态内存分配,用于向系统申请分配指定字节的内存空间

原型:extern void *malloc(unsigned int num_bytes);

看原型很头疼,来两个例子:

int* p; 

p = (int *) malloc (sizeof(int)*);//分配128个整型存储单元
double *pd=(double *) malloc (sizeof(double)*);//分配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分配空间将会非常实用。

 
 

内存分配malloc函数注意事项。的更多相关文章

  1. 关于c语言内存分配,malloc,free,和段错误,内存泄露

    1.   C语言的函数malloc和free (1) 函数malloc和free在头文件<stdlib.h>中的原型及参数        void * malloc(size_t size ...

  2. 转: Linux C 动态内存分配 malloc及相关内容 .

    一.malloc()和free()的基本概念以及基本用法: 1.函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针 ...

  3. 数据结构基础——指针及动态内存分配(malloc)

    一.指针 C语言中的指针是一种数据类型,比如说我们用int *a;就定义了一个指针a,它指向一个int类型的数.但是这个指针是未初始化的,所以,一般的,我们都在创建指针时初始化它,以免出错,在还不吃的 ...

  4. [转]内存分配malloc, new , heapalloc

    malloc,new,VirtualAlloc,HeapAlloc性能(速度)比较 http://www.cppblog.com/woaidongmao/archive/2011/08/12/1531 ...

  5. c语言中的内存分配malloc、alloca、calloc、malloc、free、realloc、sbr

    C语言跟内存分配方式 (1) 从静态存储区域分配.内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量,static变量. (2) 在栈上创建.在执行函数时,函数内局部变 ...

  6. Linux C 动态内存分配--malloc,new,free及相关内容

    一.malloc()和free()的基本概念以及基本用法: 1.函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针 ...

  7. c语言内存分配-malloc

    malloc 原型:(原来返回类型是char) extern void *malloc(unsigned int num_bytes); 头文件: #include <stdlib.h> ...

  8. c++ 动态数组,指针与动态内存分配

    教学内容: 内存的使用 动态内存分配malloc函数 分配内存时使用sizeof运算符 用指针访问内存 以数组的形式访问内存 一.内存的使用 堆(heap) 在程序执行期间分配内存时,内存区域中的这个 ...

  9. 终于懂了:Delphi的函数名不是地址,取地址必须遵守Object Pascal的语法(Delphi和C的类比:指针、字符串、函数指针、内存分配等)good

    这点是与C语言不一样的地方,以前我一直都没有明白这一点,所以总是不明白:函数地址再取地址算怎么回事? ------------------------------------------------- ...

随机推荐

  1. sql随机插入数据--记录

    sql面试题中经常出现一张学生表,表字段有学生ID,学生课程,学生成绩 今天要实测,so,需要有数据,now,随机生成数据,,, create table student ( id ), --编号 c ...

  2. ionic4 添加自定义字体图标

    在angular.json中的style中引入css文件: 然后在variables.scss中添加内容:

  3. EasyUI学习笔记(三)—— message和menubutton的使用

    一.message(消息框) 1.1 alert   <script type="text/javascript"> $(function () { // alert方 ...

  4. 002 android studio 常用设置

    1.改变字体 file--->setting --->font--->size 2.更改最小安卓版本 在project目录下,app下的build.gradle中修改 注意:buil ...

  5. Hibernate复合主键的注解

    [转自] http://blog.csdn.net/happylee6688/article/details/17636801 最近做项目用到了Hibernate框架,采用了纯面向对象的思想,使用OR ...

  6. 一种简单快速的模板解析方法,活用with javascript版

    //一种简单快速的模板解析方法,活用with var parseTpl = function( str, data ) { var tmpl = 'var __p=[];' + 'with(obj|| ...

  7. 子查询及pymysql

    子查询 子查询指的是当一个查询语句被作为另一个查询语句的条件时,该查询语句就称之为子查询(内层查询) 可以将一个大问题 拆分几个小的问题 然后一步一步来查询 需求:财务不有哪些人 ),sex ),jo ...

  8. PIE SDK去相关拉伸

    1.算法功能简介 由于高度相关的数据集经常生成十分柔和的彩色图像,因此经常使用 去相关拉伸工具来体消除多光谱数据集中的高度相关性, 从而生成一幅色彩亮丽的彩色合成图像.去相关拉伸需要 3 个输入波段, ...

  9. PIE SDK矢量数据项查看

    1. 功能简介 矢量数据由大量要素信息构成,矢量数据项查看可以看到数据的属性表,下面就基于PIE SDK,介绍矢量数据项查看功能的实现. 2. 功能实现说明 2.1. 实现思路及原理说明 第一步 加载 ...

  10. VUE-CLI 设置页面title

    router > index.js { path: '/worklist', name: 'worklist', component: worklist, meta: {title:'维修工列表 ...