C语言学习之我见-malloc和free内存申请及释放函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C语言学习之我见-malloc和free内存申请及释放函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1669字,纯文字阅读大概需要3分钟。
内容图文
malloc函数负责向计算机申请确定大小的内存空间。
free函数负责释放malloc的申请空间。
(1)函数原型
void free(void *_Memory);
void * malloc(size_t _Size)
(2)头文件
stdlib.h
(3)功能
malloc负责申请size_t _Size大小的内存空间,并且把所申请得到的内存空间首地址,
作为void*返回。用户往往必须把void*强制转换。
(注意:进程不会自动释放malloc申请的变量,无论是在主函数还是子函数,都不会)
正因为malloc申请内存不会自动释放,所以使用malloc必须配套free主动释放,否则申请
的内存空间将会一直存在到进程被结束。如果申请过多,会导致内存溢出
(4)基础实例代码
char* ptc = (char*)malloc(30*sizeof(char));
int* pti = (int*)malloc(30*sizeof(int));
for(int i=0;i<30;++i)
{
printf("%d ",ptc[i]);//用来依次输出每个字符
}
for(int i=0;i<30;++i)
{
printf("%d ",pti[i]);
}p
free(ptc);
free(pti);
(5)输出情况
(6)基础实例代码2:
char* ptc = (char*)malloc(30*sizeof(char));
int* pti = (int*)malloc(10*sizeof(int));
char a[]="zobol's Magic Cabin";
int b[10]={1,2,3,4,5,6,7,8,9,10};
strcpy(ptc,a);//字符串复制
memcpy(pti,b,10*sizeof(int)); //数组内存复制,注意第三个参数是以字节为单位
printf("%s\n",ptc);//输出
for(int i=0;i<10;++i)
{
printf("%d ",pti[i]);
}
(7)输出情况:
(8)问题1:如果不用free释放malloc申请的内存,会发生什么事?
回答:那你只需要很简短的代码就可以榨干你的电脑的内存。
for(int i=0;i<99999999;++i)
{
malloc(300000);
}
(9)如果不用指针接住malloc申请的内存空间的地址,会发生什么事情?
回答:malloc已经向计算机申请了空间了,但是你没有保存返回的空间内存地址,那就等于白占用看计算机空间。
(10)在子函数内部malloc申请的空间,会不会随着子函数结束而释放?
回答:不会!C语言给予了程序员绝对的自由,malloc申请的空间,除了程序员主动调用malloc以外,绝对不会被程序自动释放。
如果有帮助,欢迎关注我的个人公众号:zobol的魔法藏书室
内容总结
以上是互联网集市为您收集整理的C语言学习之我见-malloc和free内存申请及释放函数全部内容,希望文章能够帮你解决C语言学习之我见-malloc和free内存申请及释放函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。