new和malloc的区别

2023-05-16

new和malloc的区别


1、new从自由存储区上分配内存,malloc从堆上分配内存。自由存储区是C++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区。而堆是操作系统中的术语,是操作系统所维护的一块特殊内存,用于程序的内存动态分配。那么自由存储区是否能够是堆(问题等价于new是否能在堆上动态分配内存),这取决于operator new 的实现细节。自由存储区不仅可以是堆,还可以是静态存储区,这都看operator new在哪里为对象分配内存。
2、new、delete 返回的是某种数据类型指针;malloc、free 返回的是 void 指针。
3、使用new操作符申请内存分配时无须指定内存块的大小,编译器会根据类型信息自行计算;使用malloc则需要显式地指出所需内存的尺寸。
4、new 可以调用对象的构造函数,对应的 delete 调用相应的析构函数;malloc 仅仅分配内存,free 仅仅回收内存,并不执行构造和析构函数。在new一个对象的时候,首先会调用malloc为对象分配内存空间,然后调用对象的构造函数。delete会调用对象的析构函数,然后调用free回收内存。
5、new、delete 是操作符,可以重载;malloc、free 是函数,可以重写(覆盖)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

new和malloc的区别 的相关文章

  • 在Linux上的C中分配可执行RAM

    我想在 Linux 上用 c 制作一个简单的即时编译器 如何分配内存 以便向其中写入原始 x86 代码并像其他函数一样执行它 请参阅 mprotect 用代码填充 n 页大小的内存区域 使用 mmap 分配 后 更改其权限以禁止写入并允许执
  • 程序终止后动态分配内存

    当包含动态分配内存 使用 malloc new 而没有 free delete 调用的 C C 程序终止时 动态分配的内存会发生什么 操作系统是否收回内存 或者其他程序是否无法访问该内存 我不认为语言标准有任何保证 但是支持稀疏虚拟内存和内
  • dlmalloc 如何合并块?

    下面是dlmalloc算法的详细说明 http g oswego edu dl html malloc html http g oswego edu dl html malloc html dlmalloc 块由一些元数据存储 其中包括有关
  • 在 C++ 中动态增长数组

    我有一个 CName 对象指针数组 我有以下构造函数 它将数组初始化为大小一 然后 当我添加一个对象时 我将数组增加 1 并添加新对象 它编译得很好 但是当我尝试打印它们时 我只是收到分段错误错误 你能帮我看看我有没有做错什么吗 const
  • C++ new / new[],它是如何分配内存的?

    我现在想知道这些指令如何分配内存 例如 如果我得到代码怎么办 x new int 5 y new int 5 如果这些都被分配了 那么它在 RAM 中的实际情况是什么样的 是否为每个变量保留整个块 或者块 内存页或如何称呼它 32 位上的
  • malloc(1) 的对齐要求是什么

    我听说成功调用malloc 返回适合任何类型对齐的指针 然而 要求这样做似乎毫无用处且浪费 malloc 1 返回一个指针 其对齐值大于1因为没有物体大于char可以存储到块中 对齐要求是什么malloc 1 malloc 2 etc 如果
  • 在 c 中使用 malloc 实现堆栈 [初学者]

    出于学习目的 我正在用 c 语言实现一个堆栈及其函数 我添加了一些小的附加功能来第一次使用 malloc 并尝试正确理解它 我编写了一个最初创建堆栈结构的函数 该函数的返回值是一个具有已分配内存的新结构 在返回值应该是结构的函数中处理 ma
  • 跟踪 malloc 分配了多少内存

    在快速浏览了 SO 上的相关问题后 我推断没有函数可以检查 malloc 分配给指针的内存量 我正在尝试使用 C 中的简单 char 来复制一些 std string 基本功能 主要是动态大小 并且不想一直调用 realloc 我想我需要跟
  • 在 C 中 Malloc 一个二维数组[重复]

    这个问题在这里已经有答案了 每次我首先为二维数组分配内存时 我都会创建一个数组int 然后使用 for 为每个元素分配内存 例如 int arr malloc N sizeof int for i 0 i lt N i arr i mall
  • 第一个元素偏移量

    结构的第一个元素的偏移量为 0 是否是保证 为了更准确 让我们考虑一下 struct foo int a double b struct foo ptr malloc sizeof struct foo int int ptr ptr gt
  • alloca 函数崩溃,但 malloc 正常

    请解释一下崩溃的原因 我的第 3 方代码意外崩溃并出现 EXC BAD ACCESS static int overwrite selector struct srm target srm MARFileRemoverProgressBlo
  • 如何在 JavaScript 中有效地将大块细分为许多大小为 2 的幂的小块

    建设关闭这个答案 https stackoverflow com questions 66253424 how to efficiently segment a large block of predefined size into sma
  • 为什么gcc中malloc将值初始化为0?

    可能各个平台的情况不一样 但是 当我使用 gcc 编译并运行下面的代码时 我在 ubuntu 11 10 中每次都得到 0 include
  • malloc(sizeof(int)) vs malloc(sizeof(int *)) vs (int *)malloc(sizeof(int))

    我承认这三个都有不同的含义 但是 我不明白这些都适用于哪些特定情况 任何人都可以分享每个例子吗 谢谢 malloc sizeof int malloc sizeof int int malloc sizeof int malloc size
  • malloc()在哪里分配内存?是进程虚拟地址空间的数据段还是堆段?

    自从我被介绍到C 有人告诉我 在C动态内存分配是使用中的函数完成的malloc家庭 我还了解到 使用动态分配内存malloc分配在进程的堆部分 各种操作系统教科书都这么说malloc涉及系统调用 虽然并不总是但有时 来将堆上的结构分配给进程
  • C++ New 与 Malloc 用于对象的动态内存数组

    我有一个 Bullet 类 它的构造需要几个参数 但是 我使用动态内存阵列来存储它们 我正在使用 C 所以我想通过使用 new 运算符来分配内存来符合它的标准 问题是当我分配数组时 new 运算符要求构造函数参数 而当时我没有 我可以使用
  • 在结构体中动态分配结构体

    我正在动态分配一个具有不同结构作为成员的结构 struct a other members struct b struct b基本上持有一个指向另一个的指针struct b 所以想到struct b作为链接列表 如果我动态分配struct
  • 如何从 .t​​xt 文件中读取已知数量的未知大小的字符串并将每一行存储在矩阵的一行中(在 C 中)?

    标题是不言自明的 我几乎可以肯定 最终结果不会是一个矩阵 因为每行都有不同数量的列 所以它更像是可变大小的数组的数组 按大小对片段进行排序 最大的在前 也很有趣 这是我到目前为止所尝试过的 int main char str MAXLEN
  • 堆内存和Slab分配

    我很困惑heap and free list 我有几个问题 我对C中malloc的工作原理有自己的理解 如果我错了 请纠正我 堆内存是否被组织为数据的链表 空闲列表 块 堆内存和空闲列表有区别吗 我对存储分配的理解 有待改进 当我们调用ma
  • 为什么 new()/delete() 比 malloc()/free() 慢?

    为什么new delete 比malloc free 慢 EDIT 感谢到目前为止的回答 如果您有new 和delete 的标准C 实现规范 请指出 谢谢 看一下这段C代码 struct data pd malloc sizeof stru

随机推荐

  • java程序将ftp内文件转为http预览及下载流

    首先引入ftp连接需要的jar包 lt dependency gt lt groupId gt commons net lt groupId gt lt artifactId gt commons net lt artifactId gt
  • 解决 grant all privileges on *.* to ‘root‘@‘%‘ identified by ‘PASSWORD‘ with grant option; 错误

    从MySQL 8开始 xff0c 您不再可以 隐式地 使用GRANT命令创建用户 用CREATE USER代替 xff0c 后面跟着GRANT语句 CREATE USER 39 root 39 64 39 39 IDENTIFIED BY
  • 约瑟夫环问题(菜鸟自己的总结)

    约瑟夫问题 首先约瑟夫问题 据说著名犹太历史学家 Josephus有过以下的故事 xff1a 在罗马人占领乔塔帕特后 xff0c 39 个犹太人与Josephus及他的朋友躲到一个洞中 xff0c 39个犹太人决定宁愿死也不要被敌人抓到 x
  • 模拟电路 电学英语单词大赏

    AC Alternating current 交流电 DC direct current 直流电 op amp operation amplifier 运算放大器 paritical 粒子 electrical potential ener
  • Windows下Seata配置启动

    此为个人笔记 xff0c 看了网上其他人的配置 xff0c 仅仅用于记录 1 首先需要下载安装包与源码 xff0c 俩者版本需一致 https github com seata seata releases 2 创建一个seata 数据库
  • Html技术

    软件架构 xff1a 架构访问端服务端C SClientServerB SBrowserServer Html xff1a Hyper Text Markup Language xff08 超文本标记语言 xff09 简写 xff1a HT
  • Python库的安装问题

    Python库的安装问题 所遇问题与解决方式安装版本 1 Pycharm安装gdal库失败1 1 错误一 xff1a 缺少VC 43 43 14环境1 2 错误二 xff1a 安装VC 43 43 14 0后 xff0c 再在pycharm
  • 转JSON时去除指定属性、JSONArray和JSONObject的顺序变化问题

    一 转JSON时去除指定属性 span class token comment 方法一 xff1a 遍历循环 xff0c 使用remove去除JSON属性 span JSONArray jsonList span class token o
  • java书城登录注册查询 原生servlet实现

    java书城登录注册查询 原生servlet实现 前言一 项目功能二 项目实现方法1 项目结构 总结图片展示结语另外 文章目录 前言一 项目功能二 项目实现方法1 项目结构 总结图片展示结语另外 前言 本人是一位破烂专科的大二学生 xff0
  • shell 美化工具(oh my posh)

    Chat 最近放寒假了 xff0c 这几天在学习小程序与go xff0c 然后经常逛github xff0c 看一些go的项目 xff0c 然后发现一个由go写的项目 xff0c 非常的不错 xff0c 它叫oh my posh xff0c
  • linux twm_回到TWM Linux桌面基础知识

    linux twm TWM是最不起眼的窗口管理器 xff0c 类似于您购买相框时获得的那些样本照片 Xorg随X11 Windows系统一起提供的基本的 xff0c 几乎是最低限度的概念证明 xff0c 可以证明确实可以为图形用户界面 xf
  • sequelize 爬坑【2】 Op 相关操作合集【转】

    const Op span class token operator 61 span Sequelize span class token punctuation span Op span class token punctuation s
  • Spring框架入门

    文章目录 Spring第1章 简介 61 61 1 1 Spring概述 61 61 Spring的下载地址1 3 Spring模块 61 61 Spring框架分为五大模块 xff1a 61 61 1 4 HelloWorld 61 61
  • 小米笔试真题一

    小米笔试真题一 第一题第二题第三题第四题第五题第六题第七题第八题第九题第十题第十一题第十二题第十三题总结 第一题 下述算法的时间复杂度为 xff08 xff09 A O log2n B O n C O nlog2n D O n 2 span
  • C语言数组专题训练

    C语言数组专题训练 第一题第二题第三题第四题第五题第六题第七题第八题第九题第十题第十一题 第一题 若有语句char s1 10 s2 10 61 books xff1b 则能将字符串 books 存放到数组 s1 的正确语句是 A strc
  • 逻辑结构与物理结构

    逻辑结构与物理结构 逻辑结构集合结构线性结构树形结构图形结构 物理结构 逻辑结构 简单的来说 xff0c 逻辑结构就是数据之间的关系 逻辑结构常见有四种类型 xff1a 集合结构 xff0c 线性结构 xff0c 树形结构 xff0c 图形
  • 乐鑫面试流程

    乐鑫面试流程 面试岗位笔试技术面试HR面电话聊天发offer 面试岗位 嵌入式软件实习生 笔试 题目分为选择题和编程题 xff0c 选择题二十题 xff0c 编程题两题 xff1b 选择题基本是一些计算机相关基础知识 xff0c 比较简单
  • 全局变量和静态变量的初始化

    全局变量和静态变量的初始化 全局变量 static变量初始化时间静态局部变量全局变量 不要写出和编译顺序相关的程序总结 全局变量 static变量初始化时间 静态局部变量 首先 xff0c 静态局部变量和全局变量一样 xff0c 数据都存放
  • 不同操作系统及CPU字长、寻址能力、指针宽度的理解

    不同操作系统及CPU字长 寻址能力 指针宽度的理解 字长CPU位宽CPU的寻址能力操作系统32bit 64bit指针大小 字长 64位CPU和32位CPU中64和32的含义 xff1a 64和32指的是CPU中的寄存器 通用 的字长 xff
  • new和malloc的区别

    new和malloc的区别 1 new从自由存储区上分配内存 xff0c malloc从堆上分配内存 自由存储区是C 43 43 基于new操作符的一个抽象概念 xff0c 凡是通过new操作符进行内存申请 xff0c 该内存即为自由存储区