zoukankan      html  css  js  c++  java
  • C++内存管理

    内存管理的开销

        当在栈里自动创建对象时,对象的大小和它们的生存期被准确地内置在生成的代码里,这是因为编译器知道确切的类型,数量和范围,而在堆里创建对象还包括另外的时间和空间的开销,例如使用new创建

        对象,此时会调用malloc来从堆里申请一块内存,从堆里搜索一块足够大的内存来满足请求,这可以通过检查某种方式排列的映射或目录来实现,这样的映射或目录用以显示内存的使用情况,这个过程很快

        但也可能要试探几次,所以它可能是不确定的,即每次运行malloc并不是花费了完全相同的时间,在指向这块内存的指针返回之前,这块内存的大小和地址必须记录下来,这样以后再调用malloc就不会使用它

        而且当free时系统就会知道释放多大的内存,类stash和stack自己都将不“拥有”它们指向的对象,即当stash和stack对象出了范围,它也不会为它指向的对象调用delete,视图使它们成为普通的类是不可能的,

        原因是它们是void指针,而如果delete一个void指针,唯一发生的事情就是释放内存,这是因为既没有类型信息也没有办法使得编译器知道要调用哪个析构函数

  • 相关阅读:
    python-excel操作
    python-处理文件
    python-pandas应用总结
    python比较数组
    vue学习一(指令1.v-text,v-html,插值表达式{{msg}})
    博客园背景图页面定制css
    SpringBoot的yml文件报org.yaml.snakeyaml.scanner.ScannerException: mapping values are not allowed here in 'reader', line 11, column 16:
    python初学习一
    C#多线程
    API与WebApi
  • 原文地址:https://www.cnblogs.com/qianqiannian/p/6596567.html
Copyright © 2011-2022 走看看