C语言-malloc
malloc函数
- 中文名
- 动态内存分配
- 外文名
- memory allocation
- 简 称
- malloc
- 原 型
- extern void *malloc
- 头文件
- stdlib.h
malloc函数函数定义
malloc函数原型
|
1
|
extern void *malloc(unsigned int num_bytes); |
malloc函数头文件
|
1
2
3
|
#include <stdlib.h>或者#include <malloc.h> |
malloc函数函数声明
|
1
|
void *malloc(size_t size); |
malloc函数返回值
malloc函数说明
malloc函数相关函数
malloc函数与new的区别
|
1
2
3
|
int *p;p = new int;//返回类型为int *类型(整数型指针),分配大小为sizeof(int); |
|
1
2
3
|
int *parr;parr = new int[100];//返回类型为int *类型(整数型指针),分配大小为sizeof(int) * 100; |
|
1
2
3
4
5
6
7
|
int *p;p = (int*)malloc(sizeof(int) * 128);//分配128个(可根据实际需要替换该数值)整型存储单元,//并将这128个连续的整型存储单元的首地址存储到指针变量p中double *pd = (double*)malloc(sizeof(double) * 12);//分配12个double型存储单元,//并将首地址存储到指针变量pd中 |
|
1
2
3
4
5
6
7
8
9
10
|
type *p;if(NULL == (p = (type*)malloc(sizeof(type))))/*请使用if来判断,这是有必要的*/{ perror("error..."); exit(1);}.../*其它代码*/free(p);p = NULL;/*请加上这句*/ |
|
1
2
|
int *p = (int*)malloc(sizeof(int) * 100);//分配可以放得下100个整数的内存空间。 |
|
1
2
3
4
5
|
char *ptr;if((ptr = (char*)malloc(0)) == NULL) puts("Gotanullpointer");else puts("Gotavalidpointer"); |
malloc函数工作机制
malloc函数程序示例
malloc函数正常程序
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
typedef struct data_type{ int age; char name[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; |
malloc函数内存泄漏实例
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
例1:#include <stdio.h>#include <malloc.h>#define MAX 100000000int main(void){ int *a[MAX] = {NULL}; int i; for(i=0;i<MAX;i++) { a[i]=(int*)malloc(MAX); } return 0;} |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#include "stdio.h"#include "malloc.h"//malloc()函数被包含在malloc.h里面int main(void){ char *a = NULL;//声明一个指向a的char*类型的指针 a = (char*)malloc(100*sizeof(char));//使用malloc分配内存的首地址,然后赋值给a if(!a)//如果malloc失败,可以得到一些log { perror("malloc"); return -1; } sprintf(a,"%s","HelloWorld\n");//"HelloWorld\n"写入a指向的地址 printf("%s\n",a);//输出用户输入的数据 free(a);//释放掉使用的内存地址 return 0;//例2有无内存泄露? }注:例1:对malloc申请之后没有检测返回值;例2:检测malloc返回值条件有误(例2是对的吧?)。 |
C语言-malloc的更多相关文章
- C语言malloc()函数:动态分配内存空间
头文件:#include <stdlib.h> malloc() 函数用来动态地分配内存空间(如果你不了解动态内存分配,请查看:C语言动态内存分配及变量存储类别),其原型为:void* m ...
- C语言malloc和free实现原理
以下是一段简单的C代码,malloc和free到底做了什么? int main() { char* p = (char*)malloc(32); free(p); return 0; } malloc ...
- (转)C语言malloc()与free()的使用
如何使用 malloc 函数 本文为转载内容,原文地址请点击 不要莫名其妙,其实上面这段小小的对话,就是malloc的使用过程.malloc是一个函数,专门用来从堆上分配内存.使用malloc函数需要 ...
- C语言malloc函数为一维,二维,三维数组分配空间
c语言允许建立内存动态分配区域,以存放一些临时用的数据,这些数据不必在程序的声明部分定义,也不必等到函数结束时才释放,而是需要时随时开辟,不需要时随时释放,这些数据存储在堆区.可以根据需要,向系统申请 ...
- C语言 malloc函数
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. ...
- C语言 malloc()与sizeof运算的盲点
//malloc()与sizeof运算的盲点 #include <stdio.h> #include <stdlib.h> #include <string.h> ...
- C语言 malloc calloc realloc alloc 在分配内存时的 区别
malloc : 向堆申请分配内存,不初始化 calloc : 向堆申请分配内存,初始化为0 realloc: 向堆申请分配内存,可调整大小 alloc : 向栈申请内存,不需手动释放
- C语言 malloc、calloc、realloc的区别
三个函数的申明分别是: void* malloc(unsigned size); void* realloc(void* ptr, unsigned newsize); void* calloc(si ...
- 数据结构复习之C语言malloc()动态分配内存概述
#include <stdio.h> #include <malloc.h> int main(void) { ] = {, , , , }; // 计算数组元素个数 ]); ...
随机推荐
- 【Hyper-V】尝试启动选定的虚拟机时出错 32788
错误描述 遇到问题如往常一般搜索了一番(好久没搜索问题了)忽然发现,现在百度文章质量较前几年差太多...怪不得那么多人转搜狗搜索(搜微信文章) PS:有些说是目录权限问题,有些是说虚拟磁盘删了重新加载 ...
- 使用Net Mail发送邮件
最近用到了发送邮件这个功能,简单记录一下案例.代码如下: using System; using System.Collections.Generic; using System.Linq; usin ...
- 12、Render函数
1.什么是Render函数 Vue 推荐在绝大多数情况下使用模板来创建你的 HTML.然而在一些场景中,你真的需要 JavaScript 的完全编程的能力.这时你可以用渲染函数,它比模板更接近编译器. ...
- js内存空间
堆数据结构 堆数据结构是一种树状结构.它的存取数据的方式与书架和书非常相似.我们只需要知道书的名字就可以直接取出书了,并不需要把上面的书取出来.JSON格式的数据中,我们存储的key-value可以是 ...
- Object.entries和Object.fromEntries
语法 Object.entries(obj) 参数 obj 可以返回其可枚举属性的键值对的对象. 返回值 给定对象自身可枚举属性的键值对数组 语法 Object.fromEntries(iterabl ...
- 用SWFUpload上传图片小例子
在开发项目中,经常会用到上传图片,接下来我就用一种简单的方式给大家分享一下使用SWFUpload的方式上传图片. 1.在网站根目录下新建一个SWFUpload文件夹,把下载的组建放在SWFUpload ...
- Java 之 Properties 集合
一.Properties 概述 Properties 是Hashtable的子类,不允许key和value是null,并且它的key和value的类型都是String. 二.常用方法 1.构造方法 P ...
- 安装Docker报container-selinux >= 2.9错
Docker装了无数次,还是会遇到如此熟悉的问题,知道他是版本需要更新,但是就是找不到对应的,在网上找了差不多一个下午都没弄好.发现平时还是要多动脑子才行,既然知道是版本需要更新,那么到官网直接找版本 ...
- MySQL的select详细介绍
MySQL 查询数据 MySQL 数据库使用SQL SELECT语句来查询数据. 你可以通过 mysql> 命令提示窗口中在数据库中查询数据 语法 以下为在MySQL数据库中查询数据通用的 SE ...
- javascript中事件总结&通用的事件侦听器函数封装&事件委托
前言: JAVASCRIPT与HTML之间的交互是通过事件来实现的.事件,就是文档或浏览器窗口中发生的一些特定交互瞬间.可以使用侦听器( 或处理程序 )来预定事件,以便事件发生时执行相应的代码.这种在 ...