free 订阅
free,英文单词,主要用作动词、形容词、副词,作及物动词时意思是“使自由,解放;释放”,作形容词时意思是“免费的;自由的,不受约束的;[化学] 游离的”,作副词时意思是“自由地;免费”。 展开全文
free,英文单词,主要用作动词、形容词、副词,作及物动词时意思是“使自由,解放;释放”,作形容词时意思是“免费的;自由的,不受约束的;[化学] 游离的”,作副词时意思是“自由地;免费”。
信息
英式读音
[friː]
美式读音
[friː]
词    性
动词、形容词、副词
外文名
free
free短语搭配
free software自由软件 ; 自由软体 ; 免费软件 ; 自在软件free fall自由落体 ; 自由下坠 ;[力]自由下落 ; 自由下降Free Trade[贸易]自由贸易 ; 自由交易 ; 贸易自由化 ; 自由商业 [1] 
收起全文
精华内容
下载资源
问答
  • free函数

    千次阅读 2019-04-21 17:36:24
    1.free()函数 头文件:stdlib.h或malloc.h 作用:释放malloc(或calloc,realloc)函数给指针变量分配的内存空间 2.free的实现原理 操作系统在调用malloc函数时,会默认在malloc分配的物理内存前面分配一个数据结构...

    1.free()函数

    头文件:stdlib.h或malloc.h
    作用:释放malloc(或calloc,realloc)函数给指针变量分配的内存空间


    2.free的实现原理

    操作系统在调用malloc函数时,会默认在malloc分配的物理内存前面分配一个数据结构,这个数据结构记录了这次分配内存的大小,在用户眼中这个操作是透明的。

    那么当用户需要free时,free函数会把指针退回到这个结构体中,找到该内存的大小,这样就可以正确的释放内存了。


    3.free到底释放了什么

    free()释放的是指针指向的内存并非指针。指针是一个变量,只有程序结束时才被销毁。释放了内存空间后,原来指向这块空间的指针还是存在!只不过现在指针指向的内容的垃圾,是未定义的,所以说是垃圾。
    注意:free()并不是真正意思上的释放内存:
    其实,free函数只是将参数指针指向的内存归还给操作系统,并不会把参数指针置NULL。从另一个角度来看,内存这种底层资源都是由操作系统来管理的,而不是编译器,编译器只是向操作系统提出申请。所以free函数是没有能力去真正的free内存的。只是告诉操作系统它归还了内存,然后操作系统就可以修改内存分配表,以供下次分配。

    通过这种内存分配机制,可以解释很多c语言中的迷惑问题:
    比如,用户已经free了一段内存,为什么还可以调用该指针,并且编译器不报错?

    因为,free函数的作用只是告诉操作系统该内存不用了,可以收回,操作系统就把该内存链接到链接表上,但是这段内存用户还是可以访问到的,只是该内存的值可能已经发生了变化。
    即此时原本指向刚刚释放掉了空间的指针p仍然指向了该内存空间,这样一旦这段内存已经被别的变量使用的话,就可能误用p来修改这里的值。
    解决办法就是,在free后,把该指针指向NULL。


    4.浅识堆与栈

    什么是堆:堆是大家共有的空间,分全局堆和局部堆。
    全局堆就是所有没有分配的空间,局部堆就是用户分配的空间。堆在操作系统对进程初始化的时候分配,运行过程中也可以向系统要额外的堆,但是记得用完了要还给操作系统,要不然就是内存泄漏。
    什么是栈:栈是线程独有的,保存其运行状态和局部自动变量的。
    栈在线程开始的时候初始化,每个线程的栈互相独立。每个函数都有自己的栈,栈被用来在函数之间传递参数。操作系统在切换线程的时候会自动的切换栈。栈空间不需要在高级语言里面显式的分配和释放。


    5.free误区

    free()的时候程序宕机,很多时候都是和内存溢出或者说内存分配问题有关(若遇到相关问题,可以多往这上面想):
    一句话就是你想释放的内存和你实际释放的内存不一样。
    举例一:

    int shanchu(struct ListNode *head)
    {

    struct ListNode   *temp,*current;
    int      i,j,ret=0;
    if(head->next==0)
    {
    	ret=-1;
    	return   ret;
    }
    i=bianli(head);
    current=head->next;
    temp=head->next->next;
    
    for (j=0;j<i; i++) 
    { 
        if (current != NULL) 
        { 
            free(current);    // bug 出现在这里 
        }
        current = temp; 
        temp = current->next; 
    }
    head->next=0;
    return   ret;
    

    }
    在销毁链表的时候,想把一个一个的数据节点所释放掉 ,但free()总是报错,为什么
    因为在分配的时候,代码:struct ListNode *head = (struct ListNode *)malloc(sizeof(struct ListNode)); 上面只开辟了sizeof(struct ListNode )个内存,但是实际上节点被绑到其它数据块上了,它远远不止sizeof(struct ListNode)字节的内存,因此在释放上就会存在内存溢出的错误。

    举例二:
    函数:

       void Function(void) 
      
       { 
          
           char *p = (char *)malloc(100 * sizeof(char)); 
       } 
    

    就这个例子,千万不要认为函数返回,函数所在的栈被销毁指针也跟着销毁,申请的内存也就一样跟着销毁了。这绝对是错误的!因为申请的内存在堆上,而函数所在的栈被销毁跟堆完全没有关系。所以,一定要记得释放!
    事实上,如果你在函数上面定义了一个指针变量,然后在这个函数里申请了一块内存让指针指向它。实际上,这个指针的地址是在栈上,但是它所指向的内容却是在堆上面的。


    6.关于free函数与malloc函数使用需要注意的一些地方:

    A、当不需要再使用申请的内存时,记得释放;释放后应该把指向这块内存的指针指向NULL,防止程序后面不小心使用了它。
    B、这两个函数应该是配对。如果申请后不释放就是内存泄露
    (什么叫内存泄漏: 简单的说就是申请了一块内存空间,使用完毕后没有释放掉。它的一般表现方式是程序运行时间越长,占用内存越多,最终用尽全部内存,整个系统崩溃。由程序申请的一块内存,且没有任何一个指针指向它,那么这块内存就泄露了);
    如果无故释放那就是什么也没有做。释放只能一次,如果释放两次及两次以上会出现错误(释放空指针例外,释放空指针其实也等于什么也没做,所以释放空指针释放多少次都没有问题)。
    C、虽然malloc()函数的类型是(void *),任何类型的指针都可以转换成(void *),但是最好还是在前面进行强制类型转换,因为这样可以躲过一些编译器的检查。

    展开全文
  • linux命令free

    千次阅读 2020-08-30 14:28:37
    linux命令free用来查看内存,内存信息是很重要,这个必须要学一下。 total 总共的,used已经使用,free空闲的,shared共享的,buff/cache缓存,available可用的 total = used + free + buff/cache avalilable &...

           linux命令free用来查看内存,内存信息是很重要,这个必须要学一下。

    total 总共的,used已经使用,free空闲的,shared共享的,buff/cache缓存,available可用的

    total = used + free + buff/cache

    avalilable < free + buff/cache  因为只有一部分cache可供应用程序用

    swap对应的是虚拟内存

    展开全文
  • FreeAnchor

    千次阅读 2019-09-10 18:49:47
    https://github.com/zhangxiaosong18/FreeAnchor resnet50起步 https://github.com/zhangxiaosong18/FreeAnchor/blob/master/demo/webcam.py
    展开全文
  • linux free 命令下free/available区别

    万次阅读 多人点赞 2018-12-11 10:57:59
    例子 [root@VM_16_17_centos bin]# free total used free shared buff/cache available Mem: 1882892 785272 280428 40496 817192 852060 S...

    例子

    [root@VM_16_17_centos bin]# free 
                  total        used        free      shared  buff/cache   available
    Mem:        1882892      785272      280428       40496      817192      852060
    Swap:             0           0           0
    

    先说明一些基本概念
    第一列
    Mem 内存的使用信息
    Swap 交换空间的使用信息
    第一行
    total 系统总的可用物理内存大小
    used 已被使用的物理内存大小
    free 还有多少物理内存可用
    shared 被共享使用的物理内存大小
    buff/cache 被 buffer 和 cache 使用的物理内存大小
    available 还可以被 应用程序 使用的物理内存大小

    其中有两个概念需要注意

    free 与 available 的区别

    free 是真正尚未被使用的物理内存数量。
    available 是应用程序认为可用内存数量,available = free + buffer + cache (注:只是大概的计算方法)

    Linux 为了提升读写性能,会消耗一部分内存资源缓存磁盘数据,对于内核来说,buffer 和 cache 其实都属于已经被使用的内存。但当应用程序申请内存时,如果 free 内存不够,内核就会回收 buffer 和 cache 的内存来满足应用程序的请求。这就是稍后要说明的 buffer 和 cache。

    buff 和 cache 的区别

    以下内容来自# buffer和cache怎么让你们解释的那么难理解?

    从字面上和语义来看,buffer名为缓冲,cache名为缓存。我们知道各种硬件存在制作工艺上的差别,所以当两种硬件需要交互的时候,肯定会存在速度上的差异,而且只有交互双方都完成才可以各自处理别的其他事务。假如现在有两个需要交互的设备A和B,A设备用来交互的接口速率为1000M/s,B设备用来交互的接口速率为500M/s,那他们彼此访问的时候都会出现以下两种情况:(以A来说)

    一.A从B取一个1000M的文件结果需要2s,本来需要1s就可以完成的工作,却还需要额外等待1s,B设备把剩余的500M找出来,这等待B取出剩下500M的空闲时间内(1s)其他的事务还干不了

    二.A给B一个1000M的文件结果也需要2s,本来需要也就1s就可以完成的工作,却由于B,1s内只能拿500M,剩下的500M还得等下一个1sB来取,这等待下1s的时间还做不了其他事务。

    那有什么方法既可以让A在‘取’或‘给’B的时候既能完成目标任务又不浪费那1s空闲等待时间去处理其他事务呢?我们知道产生这种结果主要是因为B跟不上A的节奏,但即使这样A也得必须等B处理完本次事务才能干其他活(单核cpu来说),除非你有三头六臂。那有小伙伴可能会问了,能不能在A和B之间加一层区域比如说ab,让ab既能跟上A的频率也会照顾B的感受,没错我们确实可以这样设计来磨合接口速率上的差异,你可以这样想象,在区域ab提供了两个交互接口一个是a接口另一个是b接口,a接口的速率接近A,b接口的速率最少等于B,然后我们把ab的a和A相连,ab的b和B相连,ab就像一座桥把A和B链接起来,并告知A和B通过他都能转发给对方,文件可以暂时存储,最终拓扑大概如下:

    示例

    现在我们再来看上述两种情况:

    对于第一种情况A要B:当A从B取一个1000M的文件,他把需求告诉了ab,接下来ab通过b和B进行文件传送,由于B本身的速率,传送第一次ab并没有什么卵用,对A来说不仅浪费了时间还浪费了感情,ab这家伙很快感受到了A的不满,所以在第二次传送的时候,ab背着B偷偷缓存了一个一模一样的文件,而且只要从B取东西,ab都会缓存一个拷贝下来放在自己的大本营,如果下次A或者其他C来取B的东西,ab直接就给A或C一个货真价实的赝品,然后把它通过a接口给了A或C,由于a的速率相对接近A的接口速率,所以A觉得不错为他省了时间,最终和ab的a成了好基友,说白了此时的ab提供的就是一种缓存能力,即cache,绝对的走私!因为C取的是A执行的结果。所以在这种工作模式下,怎么取得的东西是最新的也是我们需要考虑的,一般就是清cache。例如cpu读取内存数据,硬盘一般都提供一个内存作为缓存来增加系统的读取性能

    对于第二种情况A给B:当A发给B一个1000M的文件,因为A知道通过ab的a接口就可以转交给B,而且通过a接口要比通过B接口传送文件需要等待的时间更短,所以1000M通过a接口给了ab ,站在A视图上他认为已经把1000M的文件给了B,但对于ab并不立即交给B,而是先缓存下来,除非B执行sync命令,即使B马上要,但由于b的接口速率最少大于B接口速率,所以也不会存在漏洞时间,但最终的结果是A节约了时间就可以干其他的事务,说白了就是推卸责任,哈哈而ab此时提供的就是一种缓冲的能力,即buffer,它存在的目的适用于当速度快的往速度慢的输出东西。例如内存的数据要写到磁盘,cpu寄存器里的数据写到内存。

    看了上面这个例子,那我们现在看一下在计算机领域,在处理磁盘IO读写的时候,cpu,memory,disk基于这种模型给出的一个实例。我们先来一幅图:(我从别家当来的,我觉得,看N篇文档 不如瞄此一图)

    示例

    page cache:文件系统层级的缓存,从磁盘里读取的内容是存储到这里,这样程序读取磁盘内容就会非常快,比如使用grep和find等命令查找内容和文件时,第一次会慢很多,再次执行就快好多倍,几乎是瞬间。但如上所说,如果对文件的更新不关心,就没必要清cache,否则如果要实施同步,必须要把内存空间中的cache clean下

    buffer cache:磁盘等块设备的缓冲,内存的这一部分是要写入到磁盘里的。这种情况需要注意,位于内存buffer中的数据不是即时写入磁盘,而是系统空闲或者buffer达到一定大小统一写到磁盘中,所以断电易失,为了防止数据丢失所以我们最好正常关机或者多执行几次sync命令,让位于buffer上的数据立刻写到磁盘里。

     

    展开全文
  • 主要介绍Power BI免费版(Free),专业版(Pro)以及增值版(Premium)授权功能对比
  • free命令

    千次阅读 2018-05-23 14:20:23
    转载来源-作者@loongshawn:http://blog.csdn.net/loongshawn/article/details/517581161、free命令显示结果$free total used free shared buffers cached Mem: 16464652 16371084 ...
  • FreeIPA

    千次阅读 2019-07-22 14:59:53
    FreeIPA客户端: 安装:yum install ipa-client -y 客户端注册:ipa-client-install -p admin -w 'xxxxxxxx' --mkhomedir -U 卸载freeipa客户端:ipa-client-install --uninstall 重新注册客户端:ipa-client-...
  • double free

    千次阅读 2018-03-16 01:10:54
    Double Free其实就是一种在free时利用伪造chunk并且欺骗操作系统,达到修改内存的目的。 基本知识点 先大概说下基本知识。 不管是在正在使用的还是释放的chunk,其数据结构是差不多一样的,差别在于prev_size、’...
  • Free as in beer VS Free as in speech

    千次阅读 2016-12-13 11:56:42
    Free as in beer VS Free as in speech
  • * 使用free -m命令,发现free状态的内存比available内存要大,应用程序无法全部申请free内存,只能最大申请到available的内存, * 麻烦问下,free中不可以被应用程序使用的内存是怎么回事,如何设置修改这一情况 !...
  • free -h 详解

    万次阅读 多人点赞 2019-12-10 15:52:41
    free -h 2、参数详解 total: 内存总数 used: 已经使用内存数 free:完全空闲内存 shared: 多个进程共享的内存 buffers: 用于块设备数据缓冲,记录文件系统metadata(目录,权限,属性等) cached:用于文件...
  • freerdp配置

    千次阅读 2019-11-28 15:41:17
    FreeRDP是一个Remote Desktop Protocol(协议)的一个实现,可以在Linux下通过xfreerdp命令远程Windows电脑。就个人使用体验来说,freerdp优于rdesktop。 freerdp安装 $ sudo apt install freerdp2-x11 $ xfreerdp...
  • lock-free&wait-free

    千次阅读 2017-06-16 10:36:09
    lock-free:需要取得锁的线程在有限步骤或时间内内就可以成功(多数线程都会成功,一些可能失败,比wait-free语义稍弱) wait-free:需要取得锁的线程在有限步骤或时间内内就可以成功(任意线程都会成功,语义更加强烈...
  • spire.doc.free2.7.3生成word目录

    万次阅读 2020-08-11 11:47:16
    在poi3.13生成word文档的主体后,写入本地文件后,写上spire.doc.free2.7.3的生成目录的代码,通过读取已生成的word,加上目录后,然后再生成新的word,也可以直接覆盖生成 //创建文档对象 XWPFDocument document ...
  • FreeCAD入门

    万次阅读 2018-12-22 16:43:41
    FreeCAD是一种3D CAD / CAE 参数化建模应用程序。它主要用于机械设计,但也可用于需要精确建模3D对象并控制建模历史的所有其他用途。 FreeCAD已经开发了一段时间了,它为您提供了大量功能。功能仍然缺失,特别是与...
  • FreeCAD Scripting Basics 1. python解释器和python help 提供类浏览器窗口,通过类似App.,就可以查看所有的类、属性、方法。 print dir()将列出当前在FreeCAD中加载的所有模块,print dir(App)可以列出App模块...
  • free命令详解

    千次阅读 2019-06-08 12:02:22
    linux下可以使用free命令看到系统实际使用内存的情况,一般用free -h命令查看内存占用情况。而系统实际可用内存是不是free部分呢,不是的,系统实际内存占用以及可用内存有如下几个加减法: 内存占用:used - ...
  • C语言free如何知道要free多大的空间

    千次阅读 2019-04-01 22:59:02
    博客搬家,原地址:https://langzi989.github.io/2017/04/07/free如何知道要free多大的空间/ 在C语言中,当向一个函数传递指针的时候,它的...但是使用free函数的过程中,我们只是向free中传递了一个指针,并没有...
  • free movie

    千次阅读 2015-03-10 08:51:00
    http://hntv.me/watch/black-sea-online-free-d0o.html 转载于:https://www.cnblogs.com/stoneresearch/p/4336423.html
  • centos7 free used!=total-free

    千次阅读 2018-08-10 10:50:23
    [root@VM_167_46_centos etc]# free -h total used free shared buff/cache available Mem: 993M 253M 334M 39M ...
  • double free/free invalid pointer

    千次阅读 2014-08-08 14:33:04
    p=(char *)malloc(sizeof(char));  printf("p=0x%08x", p);  sleep(2);  free(p + 1); ...*** glibc detected *** ./test_free2: free(): invalid pointer: 0x00098fa1 *** ======= Ba
  • Double Free浅析

    千次阅读 2018-05-14 11:07:18
    然后某一天骑自行车在路上跑的时候我突然悟出了Double Free的真谛。 2333好像太中二了一点,我是根据堆溢出的利用方法启发,再结合linux中libc的源码。研究出了double free的利用方法。虽然有关double free的利用...
  • FreeRDP简介

    千次阅读 2019-03-19 15:24:25
    FreeRDP是一个Remote Desktop Protocol(协议)的一个实现,遵循Apache开源协议,支持3D功能,并有较高刷新率,也支持RemoteFX,H264编解码,用户管理,音频以及外设重定向等功能。 RDP协议 因为RDP是一个标准化的...
  • 在看spire.doc.free官网API文档时,没有找到修改目录字体的方法 只有生成目录的方法,但是生成的是西文字体,我专门去问了他们官网留下的技术人员的QQ,询问到了修改目录字体的使用代码 就是再次加载生成了目录后的文档,...
  • Fastbin Double Free

    千次阅读 2019-01-19 17:56:00
    fastbin attack 是一类漏洞的利用方法,是指所有基于 fastbin 机制的漏洞利用方法,而fastbin_double_free就是其中的一种,这类漏洞利用的前提是: 存在堆溢出、use-after-free等能控制chunk内容的漏洞 漏洞发生于...
  • linux free 解读

    千次阅读 2017-08-11 11:24:56
    free命令可以用来查看系统内存使用情况。我一般习惯-m参数以MB的方式查看 [root@localhost ~]# free -m total used free shared buffers cachedMem: 1020288 947960 72328 312 8

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 194,053
精华内容 77,621
关键字:

free