【3-1-29】mallocfree实战
来源:互联网 发布:猪八戒局域网考试软件 编辑:程序博客网 时间:2024/05/20 05:08
我们了解了静态分配与动态分配的原理后,就要了解malloc和free两个函数
1:malloc函数//分配成功举例
//malloc,分配内存函数,它的返回值就是1个void指针类型,
//分配内存,释放内存
void main500()
{
//看它如何消耗内存
while (1)
{
//1024 * 1024 * 100 代表分配多少字节内存
//void *p 作用就是空类型的指针
void *p = malloc(1024 * 1024 * 100);//传递参数
Sleep(2000);
free(p);//传递一个指针,释放它,根据地址释放内存
Sleep(3000);
}
system("pause");
}
2:分配失败举例,就会返回一空指针
void main501()
{
void *p= malloc(Oxffffffff-100);//如何检测内存是否分配成功
if (p==NULL)//为空就是没有分配成功
{
printf("内存不够,没有分配");
}
system("pause");
}
3://malloc返回值是void类型,有时候需要类型转换,例如,我们要动态分配一数组怎么呢?free释放内存
void main502()
{//要把它转换成int *类型,为什么?因为作为一个指针而言,虽然他们都是地址,我知道int类型,就知道从这个地址前进4个字节
//看下面如何使用它
int *p= (int *)malloc(sizeof(int));//一个元素大小内存,这个内存用完了回收用free
*p = 5;
*p = -5;
//可以把它当作普通变量来使用
printf("我有%d元\n",*p);
free(p);
//free(p);内存不能反复释放
//可以访问这片内存,对这片内存进行赋值
//怎么样没有负数,unsigned 是无符号整数,不能有负数
unsigned int *p =(unsigned int *)malloc(sizeof(int));
*p = 5;
printf("我有%d元\n", *p);
//下面的不可以,内存根据地址来释放,下面错误
//unsigned int *p1 = p;
//free(p1);
system("pause");
}
4:实现一个动态数组 .按照数组的方式访问内存
void main503()
{
int num;
scanf_s("%d",&num);
int *p = malloc(sizeof(int)*num);
for (int i = 0; i < num;i++)//按照数组的方式访问内存
{
p[i] = i;
printf("\n%d,%x",p[i],&p[i]);
}
free(p);//释放内存
system("pause");
}
- 【3-1-29】mallocfree实战
- 本博客代码与mallocfree相关申明
- 2017032000newdelete 和mallocfree 的区别一般汇总
- Python实战计划学习作业1-3
- 实战每晚构建3
- ExtJS实战(3)-spring
- ExtJS实战(3)-spring
- ExtJS实战(3)-spring
- maven实战笔记-3
- Linux实战3
- 实战3--读入文件
- MongoDB MapReduce 实战<3>
- 实战Scala & Spark (3)
- #3变量实战讲解#
- UBUNTU实战(3)
- mininet实战3
- RN7_React-Native实战(3)
- CSS实战(3)
- 1.编写第1个Android应用程序实现按钮和复选框
- Redis入门
- 2016.12.22 学习日记-外观模式
- 【LeetCode】 203. Remove Linked List Elements
- 【笔记整理】我们仍未知道那天所用的虚函数的原理
- 【3-1-29】mallocfree实战
- Py第十六问 ImportError: DLL load failed: %1 is not a valid Win32 application
- TCP BBR及MPTCP的一些想法
- 欢迎使用CSDN-markdown编辑器
- Unity3d 使用Texturepacker制作NGUI图集
- chrome本地保存账号密码获取思路
- Hadoop中自定义排序,分区,分组
- 排序算法学习
- 对Android 软键盘向下的监听