码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • new和malloc的区别


    1,new是操作符,malloc是函数;

    2,new开辟内存失败抛出异常,malloc申请内存失败返回NULL;

    3,new开辟的内存大小不需要指定,malloc需要指定;

    4,new开辟的内存的类型会自动推导,不需要强转,malloc需要强转;

    (小型操场)

    5,实现原理:

    new会先调用operator new函数,申请足够的内存(通常底层使用malloc实现)。然后调用类型的构造函数,初始化成员变量,最后返回自定义类型指针。delete先调用析构函数,然后调用operator delete函数释放内存(通常底层使用free实现)。

    new->malloc->构造函数->delete->析构函数->free;

    malloc/free是库函数,只能动态的申请和释放内存,无法强制要求其做自定义类型对象构造和析构工作。所以malloc没有初始化功能,需要用户自己初始化。(只能申请内存,不能初始化)

    malloc原理:

    malloc函数用于动态分配内存。为了减少内存碎片和系统调用的开销,malloc采用内存池的方式,先从内核态申请大块内存作为堆区,然后将堆区分为多个内存块,放在用户态的内存池中。当用户申请内存时直接从用户态的内存池堆分配一块合适的空闲块,就不需要进入内核态申请内存,除非内存池中的内存已经用完。

    malloc在申请内存时,一般会通过brk或者mmap系统调用来进行内存申请。其中当申请内存小于128k时,会使用系统函数brk在堆区分配;而当申请内存大于等于128k时,会使用系统函数mmap在映射区分配。

    new和malloc申请的是虚拟地址还是内存地址

    堆----》虚拟地址

    free后的内存会归还操作系统吗---brk和mmap的区别

    free怎么知道要释放多大的内存

  • 相关阅读:
    主流开发语言与环境介绍
    Mac下更新python
    【Java-LangChain:使用 ChatGPT API 搭建系统-6】处理输入-链式 Prompt Chaining Prompts
    【直播精彩回顾】Redis企业级数据库及欺诈检测方案!
    tar.xz 文件的压缩和生成
    typora笔记使用base64编码图片
    数据库复习带答案
    7.自定义凸多边形
    自动直播软件开发方案:打造智能化、高效化的直播体验
    Go使用Gin+Redis实现增删改查
  • 原文地址:https://blog.csdn.net/m0_60274660/article/details/127444738
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号