C++:27---new delete malloc free

上一节我讲了new和delete,有人问这不是和C语言的malloc/free为C的标准库函数差不多么 

void* malloc(size_t size)//参数代表字节个数
void free(void* pointer)//参数代表内存地址

new、delete则为C++的操作运算符,它调用的分别为赋值运算符重载operator new()和operator delete();

实际上我在上一节已经讲了,一个是库函数,一个是运算符,怎么可能相同呢。那我们这节就说一下他俩的区别。

1.在使用上,malloc/free如下:

void func(){//开辟一个空间int* p1=(int*)malloc(sizeof(int));if(p1==NULL){exit(1);}free(p1);//开辟多个空间int*p2=(int*)malloc(sizeof(int)*4);if(p2==NULL){exit(1);}free(p2);}

用malloc分别开辟了1个和4个整型大小的空间和并free释放它们;

new/delete如下:

void func(){//开辟一个空间int* p1=new int(1);delete p1;//开辟多个空间int*p2=new int[4];delete []p2;}

由此可知:

  (1)malloc开辟空间类型大小需手动计算

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/444410.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++:33---类成员指针

成员指针概述: 当初始化一个这样的指针时,我们令其指向类的某个成员,但是不指定该成员所属的对象直到使用成员指针时,才提供成员所属的对象成员指针是指可以指向类的非静态成员的指针一般情况下,指针指向一个对象,但是成员指针指向的是类的成员,而不是类的所创建出的对象…

C++:31---对象引用和赋值

一、对象移动概述 C++11标准引入了“对象移动”的概念对象移动的特性是:可以移动而非拷贝对象在C++旧标准中,没有直接的方法移动对象。因此会有很多不必要的资源拷贝标准库容器、string、share_ptr类既支持移动也支持拷贝。IO类和unique_ptr类可以移动但不能拷贝对象移动的特…

C++:34---union:联合/共用体,一种节省空间的类

一、联合(union)概述 联合(union)是一种特殊的类一个union可以有多个数据成员,但是在任意时刻只有一个数据成员可以有值。当我们给union的某个成员赋值之后,该union的其它成员就变成未定义的状态了。分配给一个union对象的存储空间至少要能容纳它的最大的数据成员类的某些…

leetcode205. 同构字符串 一般人一次做不对的简单题

给定两个字符串 s 和 t,判断它们是否是同构的。 如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。 所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己…

C++:32---IO库

一、IO库 I0库类型和头文件头文件类型iostreamistream,wistream从流读取数据ostream,wostream向流写入数据iostream,wiostream读写流fstreamifstream,wifstream从文件读取数据ofstream,wofstream向文件写入数据fstream,wfstream读写文件sstreamistringstream,wistringst

leetcode209. 长度最小的子数组 借这个题规范一下双指针写法

给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。 示例: 输入: s 7, nums [2,3,1,2,4,3] 输出: 2 解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组…

C++(STL):01---pair容器

一、pair历史概述 C++标准库的第1版(C++98),提供了一个简单的class,用来处理类型不同的两个(一对)值,这个就是pair。到了C++11,pair被重新定义,有了很大扩展pair与tuple:tuple在TR1被引入,它是对pair的扩展tuple在后面详细概述。二、pair概述 特点: 一个pair保存两…

C++(STL):02---tuple容器

一、tuple的历史概述 Tuple是TR1引入的东西,它扩展了pair的概念,拥有任意数量的元素。在C++11标准之前,tuple最多带有10个类型不同的元素C++11,tuple被重新定义,采用variadic template概念,被设计为可用于任意大小的异质集合二、tuple概述 tuple与pair类似,也是一个模板…

C++(STL):06---数值的极值(numeric_limits类)

一、数值的极值概述 数值类型有着与平台相依的极值C++标准规定了各种类型必须保证的最小精度。这些最小值如下图所示: 类型最小长度char1byte(8bits)shortint2bytesint2byteslongint4bytes

leetocde 225. 用队列实现栈

使用队列实现栈的下列操作: push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空 注意: 你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。 你所使用的语…

C++(STL):03---智能指针之shared_ptr

一、shared_ptr类 头文件:#include<memory>智能指针,是一个模板。创建智能指针时,必须提供指针所指的类型如果当做前提条件判断,则是检测其是否为空shared_ptr<string> p1; //指向string shared_ptr<list<int>> p2;//指向int的list if(p1 &&…

C++(STL):05---智能指针之unique_ptr

一、unique_ptr类 头文件:#include<memory>智能指针,是一个模板。创建智能指针时,必须提供指针所指的类型与shared_ptr的不同之处: shared_ptr所指向的对象可以有多个其他shared_ptr智能指针而unique_ptr所指向的对象只能有一个unique_ptr指针,也就是自己。当unique…

JAVA中int、String的类型转换

int -> String int i12345; String s""; 第一种方法&#xff1a;si""; 第二种方法&#xff1a;sString.valueOf(i); 这两种方法有什么区别呢&#xff1f;作用是不是一样的呢&#xff1f;是不是在任何下都能互换呢&#xff1f; String -> int s"…

leetcode 231. 2的幂

给定一个整数&#xff0c;编写一个函数来判断它是否是 2 的幂次方。 示例 1: 输入: 1 输出: true 解释: 20 1 示例 2: 输入: 16 输出: true 解释: 24 16 示例 3: 输入: 218 输出: false 本题思路转载位运算的常用技巧&#xff1a;lowbit运算&#xff0c;包含lowbit公式、…

C++(STL):04---智能指针之weak_ptr

一、概念weak_ptr是一种不控制所指向对象生存期的智能指针&#xff0c;它指向一个shared_ptr管理的对象拥有“弱”共享的特点最重要的特点一个对象被多个shared_ptr类所指向时&#xff0c;就会拥有多个引用计数但是当weak_ptr指向一个shared_ptr类所指向的对象时&#xff0c;该…

C语言: const关键字与指针

const修饰指针的4种形式 const关键字,在C语言中用来修饰变量,表示这个变量是常量。const修饰指针有4种形式,区分清楚这4种即可全部理解const和指针。第一种:const int *p;第二种:int const *p;第三种:int * const p;第四种:const int * const p;ation ‘*p4’ // 第一种…

leetcode268. 缺失数字

给定一个包含 0, 1, 2, ..., n 中 n 个数的序列&#xff0c;找出 0 .. n 中没有出现在序列中的那个数。 示例 1: 输入: [3,0,1] 输出: 2 示例 2: 输入: [9,6,4,2,3,5,7,0,1] 输出: 8 说明: 你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现? 众所周知&#…

C++(STL):07---vector之使用方式和常规用法

简单两三句话说下vector(一般领导讲话都说简单说两句,结果说了一个钟头): 介绍 vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是…

leetcode276. 栅栏涂色

有 k 种颜色的涂料和一个包含 n 个栅栏柱的栅栏&#xff0c;每个栅栏柱可以用其中一种颜色进行上色。 你需要给所有栅栏柱上色&#xff0c;并且保证其中相邻的栅栏柱 最多连续两个 颜色相同。然后&#xff0c;返回所有有效涂色的方案数。 注意: n 和 k 均为非负的整数。 示例…

C++(STL):11---vector源码剖析

一、vector概述 vector的使用语法可以参考文章之前的几篇文章,总的来说:vector是可变大小数组特点:支持快速随机访问。在尾部之外的位置插入或删除元素可能很慢元素保存在连续的内存空间中,因此通过下标取值非常快在容器中间位置添加或删除元素非常耗时一旦vector内存不足,…