malloc的用法和new的区别_new和malloc的区别用法区别-程序员宅基地

技术标签: C基础  ACM基础  

malloc是一个函数,它所在的头文件可以是malloc.h、stdlib.h。

它的函数原型可以看做是:

void* malloc(int size_num);

1、它动态申请一块长度为size_num大小的内存,它的返回值:如果申请成功是指向所申请内存的指针, 否则为空,即NULL。

2、值得注意的是:它返回的指针类型是viod* 需要强制转换为所要得指针类型,否则编译器会报错。

3、与free一起使用,free用来释放动态申请的内存。

它与new的区别,我暂时理解为new就是一个关键字,而malloc是一个函数,下面看看大佬的解释:

出处:点击打开链接

1,malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。 
2,对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。 
3,因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。 
4,C++程序经常要调用C函数,而C程序只能用malloc/free管理动态内存

new 是个操作符,和什么"+","-","="...有一样的地位.
 
malloc是个分配内存的函数,供你调用的.
 
new是保留字,不需要头文件支持.
malloc需要头文件库函数支持.

new 建立的是一个对象,
malloc分配的是一块内存.
 
new建立的对象你可以把它当成一个普通的对象,用成员函数访问,不要直接访问它的地址空间
malloc分配的是一块内存区域,就用指针访问好了,而且还可以在里面移动指针.


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/look_poet_of_water/article/details/79451041

智能推荐

FTP服务器的搭建与文件目录详解_vsftpd添加用户并创建目录-程序员宅基地

文章浏览阅读8k次,点赞8次,收藏27次。文件传输协议FTP(File Transfer FTP)作为网络共享文件的传输协议,在网络应用软件中具有广泛的应用。FTP协议FTP是TCP/IP的协议簇协议之一,其主要功能是借助网络实现远距离主机间的文件传输。_vsftpd添加用户并创建目录

Unity HDRP Custom Pass 实现场景雪地效果_unity custom pass-程序员宅基地

文章浏览阅读625次。Unity HDRP Custom Pass 实现场景雪地效果_unity custom pass

Android 分区布局详解_board_root_extra_folders-程序员宅基地

文章浏览阅读4.6k次,点赞3次,收藏27次。在 Android 10 中,根文件系统已不再包含在 ramdisk.img 中,而是合并到了 system.img(即在创建 system.img 时始终将 BOARD_BUILD_SYSTEM_ROOT_IMAGE 视为已设置)。搭载 Android 10 的设备:使用 system-as-root 分区布局(由编译流程自动执行,且不可选择更改这种行为)。 必须使用 ramdisk,这对于 dm-linear 而言是必需的。 必须将 BOARD_BUILD_SYSTEM_ROOT_IMAGE 设_board_root_extra_folders

redis客户端-程序员宅基地

文章浏览阅读1.4w次,点赞10次,收藏26次。1、redis-cliredis自己给我们提供的一个命令行客户端2、Java客户端-Jedis是一个Redis的java客户端(Java for Redis),老牌的、稳定、封装少的客户端导包<!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency> <groupId>redis.clients</groupId> ._redis客户端

redis安装与部署_redis安装部署-程序员宅基地

文章浏览阅读4.9k次,点赞2次,收藏5次。将下载好的 redis-6.2.7.tar.gz 安装包上传到虚拟机的任意目录(一般推荐上传到 /usr/local/src目录)。如果是前台启动的话,如果关闭当前会话,则Redis服务也随即关闭,因此这种方式不推荐使用。redis-sentinel:它是 redis 提供的哨兵启动脚本。redis-check-dump:修复有问题的dump.rdb文件。redis-server:它是 redis 的服务端启动脚本。redis-cli:它是 redis 提供的客户端启动脚本。如果没有出错,就会安装成功。_redis安装部署

OpenCL——OpenCL设备信息_cl::device-程序员宅基地

文章浏览阅读1.5k次,点赞3次,收藏6次。OpenCL设备每个平台可能关联不同的设备,在把内核程序发送到OpenCL设备上执行前,编程人员需要指定执行该内核代码的计算设备。OpenCL中设备对象的类型为cl_device_id,我们可以通过以下函数来查询支持OpenCL设备列表。cl_int clGetDeviceIDs(cl_platform_id platform, cl_device..._cl::device

随便推点

怎样查找linux内核所在的分区,linux运维笔记:CentOS 系统的分区、启动及目录查询...-程序员宅基地

文章浏览阅读655次。8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?写在前面主要整理初次CentOS的基本操作,可能会显得比较乱。系统分区CentOS分区基本规则分区名称空间大小/boot200M/swap4G/20G/data剩余磁盘空间注:如果是虚拟机仅仅用来学习linux,磁盘空间有限的情况下,处 /boot 、/swap 之外的空间都可以分给 / 根目录,没有必要再分出/data..._内核在哪个分区

JavaScript随机生成一个满足数独结果的二维数组-程序员宅基地

文章浏览阅读219次。【代码】JavaScript随机生成一个满足数独结果的二维数组。

初识Cpp之 一、基础知识-程序员宅基地

文章浏览阅读1.8k次。​ C++融合了三种不同的编程方式:1、C语言代表的过程性语言,2、C++在C语言的基础上添加的类代表的面向对象语言,3、C++模板支持的泛型编程。使用C++的原因之一是为了利用其面向对象的特性。要利用这种特性,必须对标准C语言知识有较为深入的了解,因为它提供了基本类型、运算符、控制结构和语法规则。​ 面向对象编程(Object Oriented Programming, OOP)的诞生,试图让语言来满足问题的要求,其理念是设计与问题本质特性相对应的数据格式。_cpp

计算机教研评课记录,信息技术2.0 | 评课磨课共成长 信息技术促进步 ——东光县第二实验小学信息技术2.0数学组 课例研讨...-程序员宅基地

文章浏览阅读6.8k次。在我校推广信息技术2.0活动中,数学教研组成员推出高世甜老师在二年级进行《认识时间》的磨课评课活动。活动中二年级组数学教师和青蓝工程教师及教务处何春香主任参加听评课活动。高老师利用现代化教学手段,优化教学过程,突破教学重点、难点。利用微课视频,引导学生自学钟面的认识和时间的认读方法,通过开展小组合作,锻炼了学生自主学习、合作交流和语言表达能力。通过信息技术手段对各班学生进行学情分析,根据每个班的学..._信息技术2.0教研组听评课记录

华为路由器交换机配置命令大全-程序员宅基地

文章浏览阅读104次。华为路由器交换机配置命令大全**一、计算机命令**PCAlogin:root;使用root用户password:linux;口令是linux#shutdown-hnow;关机#init0;关机#logout;用户注销#login;用户登录#ifconfig;显示IP地址#ifconfigeth0netmask;设置IP地址#ifconfigeht0netmaskdown;禁用IP地址#rout..._华为交换机路由器,是否可以用命令关机

kindle刷机ttl_亚马逊卡大树kindle voyage修复刷机救砖KV死机变砖忘记密码维修-程序员宅基地

文章浏览阅读3.9k次。温馨提示:修复都不可以远程,需要邮寄;修复不是100%的,硬件问题修复不了,需要更换会提前你,确认好在进行后续工作,修复不了不收费,退回即可;修复好发回是顺丰到付,(咨询特价)(广东省内9-(咨询特价),广西,福建,新疆(咨询特价),西藏到不了,只能付费发邮政);专业修复kindle voyage死机,卡大树,变砖,不拆机、零损伤,速度快!Kindle voyage可安装安卓系统,能自由安装大部分..._kindle刷安卓变砖