使用new和delete
一、基础知识
变量是编译时分配内存的有名称的内存。
而指针只是为可以通过名称直接访问的内存提供了一个别名。指针的真正用武之地在于在运行阶段分配未命名的内存以存储值。在这种情况下,只能通过指针来访问内存。
首先new找到一块长度正确的内存块,并返回该内存的地址;
然后程序员的责任是将该内存地址赋值给一个指针。如:
方式一:
int * pn=new int;
delete pn;
方式二:
int higgens;
int * pt=&higgens;
delete pt;
第一种情况下只能通过指针来访问;
第二种情况可以通过higgens来访问该int.
为一个数据对象(可以是结构,也可以是基本类型)获得并指定分配内存的通用格式如下:
typeName * pointer_name = new typeName ;
...
delete pointer_name ;
二、使用new创建动态数组
int *ps = new int [10]; //创建一个包含10个int 元素的数组。
delete [] ps; //对于new创建的数组,使用delete [] 来释放。
new运算符返回第一个元旦的地址,改地址被赋值给指针ps.
方括号[]告诉程序,应该释放整个数组,而不仅仅是指针指向的元素。
为数组分配内存的通用格式如下:
typeName * pointer_name = new typeName [num_elements] ;
...
delete [] pointer_name ;
三、使用new和delete时要遵循的规则
- 如果在new表达式中使用了[],必须在相应的delete表达式中使用[]。如果在new表达式中不使用[],一定不要在相应的delete表达式中使用[]。确保“同时使用、相同形式”。
- 不要使用delete释放不是new分配的内存。
- 不要使用delete释放同一个内存两次。
- 使用new[]为数组分配的内存一定要使用delete[]释放,不能使用delete;new为单个对象分配的内存一定使用delete来释放。
- 对空指针delete是安全的。
使用new和delete相关推荐
- Reject: HTTP ‘DELETE‘ is not allowed, Not injecting HSTS.....DELETE请求PUT请求跨域问题
CORS(DELETE请求.PUT请求) Reject: HTTP 'DELETE' is not allowed [DEBUG] 2021-08-25 15:23:52.401 [http-nio- ...
- Git 常用操作(6)- 推送到远程仓库(git push)删除远程分支(git push origin --delete)
1. git remote add--添加远程仓库 在GitHub 上创建的仓库路径为 "git@github.com:用户名/git-tutorial.git".现在我们用git ...
- C++ 笔记(14)— 指针(指针声明、取地址、取值、new/delete、NULL指针、指针运算、指针数组、数组指针、指针传递给函数、从函数返回指针)
1. 声明指针 指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址.就像其他变量或常量一样,您必须在使用指 针存储其他变量地址之前,对其进行声明. 指针变量声明的一般形式为: type * ...
- C++:随笔6---new\delete\虚方法\抽象方法
指针是一种专门用来存储内存地址的数据类型.(他存储的不是具体的数据而是别人的地址) 常用做法是:创建一个变量,再把这个变量的地址赋值给一个指针,然后就可以用指针去访问这个变量的值. 事实上在C和C++ ...
- C++中的new和delete用法
//个体 point *p=new point; //point类存在初始化成员函数point(void)的前提下才能这样赋值: delete p;//一维数组,这样赋值的话,p在程序里表示的就不是指 ...
- LeetCode刷题记录3——237. Delete Node in a Linked List(easy)
LeetCode刷题记录3--237. Delete Node in a Linked List(easy) 目录 LeetCode刷题记录3--237. Delete Node in a Linke ...
- 在析构函数中delete this指针问题
思考:在析构函数中delete this指针,运行下面代码会产生什么样的结果呢? #include <iostream> using namespace std; class A{ pub ...
- LSM 优化系列(四) -- Rocksdb和Lethe 对Delete问题的优化
文章目录 前言 1. 问题背景 2. 问题复现 3. Rocksdb 的 Delete-Aware 优化 3.1 可配置的 Delete-Aware调度 3.2 Compaction 逻辑对 dele ...
- leetcode 237: Delete Node in a Linked List
题目: Write a function to delete a node (except the tail) in a singly linked list, given only access t ...
- 【C++】C/C++ 中default/delete特性
C++类的特殊成员函数及default/delete特性 本文内容侧重个人理解,深入理解其原理推荐https://www.geeksforgeeks.org 目录 目录 C++类的特殊成员函数及def ...
最新文章
- Hbase数据模型 列族
- Vue.js组件中v-model的使用
- python3数据类型:Tuple(元组)
- 《leetcode》search-insert-position
- angular项目打包发布流程
- 安卓学习笔记---Activity
- sparklines插件_21个实用的Javascript数据图表插件
- 【渝粤题库】陕西师范大学200131中国古代文论 作业(专升本)
- LeetCode LCP 22. 黑白方格画
- IOS控件圆角、描边
- gstreamer之RTSP Server test-mp4正确运行代码
- 关于Kubernetes规划的灵魂N问
- word页眉页脚,奇偶不同
- 鸽群优化算法(Pigeon-inspired Optimization algorithm, PIO)附matlab代码
- 禅道 upgrade.php,zentao禅道安装升级
- Hadoop-HDFS总结(五)
- QT简单入门程序——实现可修改用户信息界面
- R语言|4. 轻松绘制临床基线表Table 1 临床三线表绘制
- 资本并非全部,新家装风口下如何迎风起舞?丨Xtecher 观察
- 微服系列之Feign使用HttpClient和OkHttp网络请求框架
热门文章
- 在汇编语言调用c语言程序,C/C++调用汇编语言实例:目录表程序
- html5标签对js影响,浅谈JS对html标签的属性的干预以及对CSS样式表属性的干预
- python随机数字字符串_pythonrandom生成随机数和字符串,数字
- javaweb——jsp(学习总结,javaweb必备技能)
- eplan mysql_EPLAN SQL Server 远程数据库的搭建
- redis数据结构-hash
- aspmysql发布_ASP如何使用MYSQL数据库
- spark算子大全glom_Spark 算子- Value Transformation
- 提升专业素养之软件工程概述
- vba odbc 3704 mysql_[求助]ado对象调用存储过程运行时错误3704