当前位置:  技术问答>linux和unix

关于释放内存

    来源: 互联网  发布时间:2015-03-23

    本文导语:  程序中如果定义了 char * variable 那么什么情况下要用 free? 程序运行完 变量所占内存 会自动释放么? 最好系统的阐述一下内存的释放问题 比如静态数组,指针(如上),用malloc分配内存,谢谢! | ...

程序中如果定义了 char * variable
那么什么情况下要用 free?
程序运行完 变量所占内存 会自动释放么?
最好系统的阐述一下内存的释放问题
比如静态数组,指针(如上),用malloc分配内存,谢谢!

|
你自己分配(malloc)的内存才需要free,系统自动分配的系统自己会负责free,
程序运行完 变量所占内存 会自动释放(包括你自己分配但没有释放的)。

|
一般情况下:
malloc()和free()配套使用.
new和delete配套使用.

|
一般有几种情况
1、用char *p="..."其实等价于const char *p="..."是静态分配的,而且是只读的,所以系统自动分配空间,而且你自己无法释放.
2、用char p[]="...",在栈中自动分配,函数退出时自动释放
3、用malloc,是动态分配,需要自己释放,但是程序结束时系统可以帮助你释放,但是最好由自己来释放,也就是说malloc和free成对使用
4、C++中的new,性能上优于malloc,但是也和malloc一样,程序结束自动释放,但是最好自己释放,也就是说new和delete成对使用

|
内存分为:栈(stack)、堆(heap)、块等
主要有关的是stack 和 heap
    在程序中定义的局部变量(如:char * p, int d等)都是系统自动
在stack种分配的,这些变量都有自己的生命周期(如{}),当生命周期
到时便自动释放,无需人工手动释放,也不会对内存造成任何漏洞。
    heap中分配内存是最灵活的,也是最危险的,特别在c++中。我们用
malloc等动态分配的内存都是在堆中分配的,必须手工释放。否则造成内存
泄漏,特别是在内存较少的系统如嵌入式开放中更需注意,服务器也是。
    全局变量 静态变量等都是在块中分配的

    
 
 

您可能感兴趣的文章:

  • Linux/Centos/Ubuntu清除系统缓存释放内存命令介绍
  • 应用层malloc内存后,再free的话,内存不释放,而是在exit时释放,这个谁知道是怎么回事?
  • 我想动态申请一块内存,然后在释放这块内存,应该怎么做,在线等!
  • 在Linux上用C语言编写的函数里面申请了一块内存,并且返回这块内存,最终它需要释放吗?
  • Solaris上内存释放问题
  • 请教高手如何释放内存 iis7站长之家
  • 如何释放一个内存空间?
  • sqlite3的内存释放问题。
  • 【求教】为什么看不到内存释放的效果呢?
  • 关于子进程中释放内存的问题!!?高手请进
  • 请教高手如何释放内存
  • 如何在程序中释放特定文件缓冲区占用的内存:急!!!
  • 如果非配完内存不进行释放会产生什么情况?
  • 杀死一个进程是不是它所有的分配内存都释放了?
  • QT子窗口内存释放问题
  • 二叉树全局结构变量分配内存的释放问题
  • 可以用free来释放共享内存吗?
  • DOS下的释放内存命令是什么啊?
  • 如何释放内存?
  • STL map在使用过程中用了clear为什么在Top as中还是看不到内存释放呢?
  • getenv()返回的字符串所占的内存空间要不要用free释放
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • memset分配的空间用完以后需要进行释放吗? 如果需要释放,怎么释放呢? ---阿菜
  • 关于无名管道释放后,inode节点释放的问题
  • 请问:我发现端口一旦被绑定后就无法释放出来,除非服务器端退出,有没有主动释放端口的办法啊?
  • 用ftok获取的内核对象不需要释放吗?
  • 监听端口异常退出后如何马上释放端口
  • ctrl+c会自动释放资源?
  • 释放压缩TAR包,急,在线等
  • GTK+中类似gtk_hbox_new这样的给构件分配内存的函数 为什么不用手动释放?
  • 怎样释放服务端口??? 急:在线等待
  • 线程的资源释放
  • 连接池不能释放,
  • 用while循环等待事件发生时是否可以释放系统资源
  • LINUX源码释放磁盘页面的问题
  • 请教高手:FreeBSD下什么命令能释放系统的端口
  • 使用SYSTEM V队列,有关消息资源释放的问题
  • 子进程结束了 用new 申请的空间 是否会释放呀 ??
  • linux下如何释放ip和重新自动获得ip
  • 把ISO中的文件释放出来刻成光盘,能不能引导系统并从这个光盘上安装?
  • 【讨论】动态库资源释放问题
  • 如何杀掉一个端口下的所有进程以便释放掉这个端口


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3