问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c语言释放内存的问题

发布网友 发布时间:2022-04-29 11:33

我来回答

4个回答

热心网友 时间:2022-06-27 00:18

释放空间是指用“动态申请内存函数”申请成功的空间,不是你写的代码占用的空间。你写的代码的可执行文件占用的空间要等程序完全退出后才能自动释放,动态申请的空间在使用完毕后可以用对应的“释放函数”释放,以防止所谓“内存泄漏”——就是把内存空间用完了,程序无法运行下去了。如果只申请不释放,积累多了就会产生内存泄漏问题;在空间申请得较少的情况下也不至于一定产生泄漏,等程序退出时也就自动释放了。但写合格的程序是不能有这种指望的,正确的做法是“申请——成功后使用——使用完后及时释放。

热心网友 时间:2022-06-27 00:18

一个进程中使用的内存可以简单的分成两种:静态内存、动态内存

#include <stdlib.h>
int main(int argc, char *argv[])
{
    int a = 0;
    char *b = NULL;
 
    b = malloc(16);
    if (NULL != b)
    {
        free(b);
    }
 
    return 0;
}

看上面这个例子

a和b就属于静态内存,只要程序一直在运行 一直存在这两个变量占据的内存就不会被释放,int a占据了4字节的内存 char *b也占据了4字节的内存。一旦程序结束,内存就会被释放给其他进程使用。

但是通过malloc申请的内存就是动态内存了,申请了16字节的内存,通过判断malloc函数的返回值可以知道申请是否成功,这块申请出来的内存如果不调用free函数,那这16个字节的内存是不会释放的,直到调用了free或者进程结束,这块内存就被释放了,这个程序将不再使用这块内存,而这块内存已经可以被其他程序使用了。

要注意的是无论是静态还是动态内存,在malloc之后一定要memset或者初始化,因为系统只负责给你分配一块内存,但并不代表这块内存中是没有值的。也就是问题中所提到的:释放内存并不是把内存的数据清零。

你通过free函数释放了内存,比如b指针指向的16字节内存如果里面填满了16字节的值,你在free后另一个进程使用了这块16字节的内存,而他只使用了前5个字节,而他又没有memset初始化,那后15个字节就会有脏数据残留了。

热心网友 时间:2022-06-27 00:19

你写的程序在运行结束后就不会再占用内存了

热心网友 时间:2022-06-27 00:19

根据你所描述的问题,推荐你一个网址,讲述了C语言内存分配与释放,希望可以帮到你。

网址:网页链接

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
粒上皇开口熟栗120g*5袋(共600g)-详细介绍 三皇王板栗介绍 品牌榜:2024年板栗十大品牌排行榜 投票结果公布【新】 为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 c语言中free函数释放内存后,该内存的里边的数据还有吗? 看C语言的书中说“释放存储空间”,是什么意思?什么叫做释放,为什么叫... C语言内存释放问题 求解关于C语言的释放内存问题? C语言中是如何释放内存单元的;原理又是什么? 微信如何图片加表情 如何查看手机上已连接的wifi密码? 初中800字半命题作文《站在……》在线等 站在校园的门口 作文 初三的作文帮帮忙 要800字的 作文特殊的站立700字 《站起来,勇往直前》800字作文谁能帮我 给篇800字 题目为 站起来做人 的作文。高2 努比亚z9max精英版怎么查看wifi密码 什么的站立。作文600字 查下农历1997年11月23日的公历是几月几日 求以“站立”为文题,800字作文! 手机root不了,如何能查看wifi密码?,重点是没root权限,努比亚手机,万能的网友,帮帮我吧 以&#39;那一次,我站起来了&#39;为题的初中作文.(700字左右) 努比亚 z9 mini精英版连接过的wifi密码怎么查看? 以“站立是最美丽的风景”为题的800字议论作文 C语言 调用函数完后释放内存吗? C语言中如何释放已定义的数组空间? 在C语言进行编程中,为什么要释放旧内存? 内存释放的时候具体进行了什么操作(C语言) C语言 内存释放的问题 华为荣耀V10连续点击三下缩放屏幕功能怎么弄 设置里没有高级模式 C语言用完申请来的内存怎么释放 C语言中再次释放已经释放的空间会造成什么后果? 华为荣耀10青春版,连续点几下屏幕,图标就会变大,不知怎么办? C语言中怎样清空内存动态分配的堆空间 在C语言中,如何释放动态数组里面某一个元素所在的内存? c语言分配内存方式有哪些 开发一个聊天交友软件,需要哪些费用?开发软件大概多少钱?需要服务器一年多少钱?还有其他什么费用? 华为荣耀10如何使用 网络视频会议软件,怎么收费呢,用过的人来说说,谢谢啊 好视通视频会议软件是免费的还是收费的?如果收费是怎样收的? 视频会议软件一般多少钱? 视频聊天软件开发需要多少钱 怎样取消WORD中数字与文字之间的距离(自动调节) word2003关闭自动调整字间距