new 和 delete 是C++语言中的两个运算符,配套使用。

new:用于分配内存,与C语言中的 malloc 相同,分配在堆内存

delete:用于释放内存,与C语言中的 free 相同,释放堆内存

new 使用格式:

// 分配时不初始化
类型 *p = new 类型;
// 分配时初始化
类型 *p = new 类型(初始值);
// 分配数组不初始化
类型 *p = new 类型[长度];
// 分配数组时初始化
类型 *p = new 类型[长度]{值1, 值2, ...};

举例:

#include <iostream>

using namespace std;

int main(void)
{
// 分配时不初始化
int *p0 = new int;
*p0 = ;
cout << *p0 << endl; // 分配时初始化
char *p1 = new char('A');
cout << *p1 << endl; // 分配数组不初始化
int *p2 = new int[];
*p2 = ;
*(p2 + ) = ;
cout << *p2 << endl;
cout << *(p2 + ) << endl; // 分配数组时初始化
char *p3 = new char[]{ 'B', 'C' };
for (int i = ; i < ; i++)
{
cout << p3[i] << endl;
} return ;
}

执行结果:

delete 使用格式:

// 释放变量地址空间
delete 变量指针
// 释放数组
delete []数组指针

举例:

#include <iostream>

using namespace std;

int main(void)
{
int *p0 = new int();
cout << *p0 << endl; // 释放变量p0
delete p0; char *p1 = new char[]{ 'B', 'C' };
for (int i = ; i < ; i++)
cout << p1[i] << endl; // 释放数组p1
delete[]p1; return ;
}

最新文章

  1. 30个你必须记住的CSS选择符
  2. Pylot压力测试(linux)
  3. PYTHON第二天
  4. javax.servlet.ServletException: com.microsoft.jdbc.base.BaseDatabaseMetaData.supportsGetGeneratedKeys()Z
  5. git提交报异常,fatal: The remote end hung up unexpectedly
  6. 属性声明(property declarations), 自定义属性,自动生成 get 和 set 方法,getter 和 setter
  7. Ubuntu 下的环境变量配置
  8. svn文件回滚到某个历史版本号
  9. CF 1060E. Sergey and Subway
  10. IOS内存管理详解
  11. eslint 入门学习
  12. 操作系统-&gt;数组越界(待完善)
  13. oracle 之 定时任务,存储过程和游标等语法案例
  14. STM32烧录的常用方式
  15. go语言之进阶篇有缓冲channel
  16. Keepalived + Nginx + Tomcat 的高可用负载均衡架构搭建
  17. (三)HtmlUnit 实践
  18. uva11795
  19. Median of Two Sorted Arrays——算法课上经典的二分和分治算法
  20. java中常见的math方法

热门文章

  1. 用vue-cli搭建vue项目
  2. 全选全不选案例table表格
  3. springboot使用RestHighLevelClient7简单操作ElasticSearch7增删查改/索引创建
  4. iOS中copy和strong修饰符的区别
  5. Linux安装和配置MySQL5.7【修改密码、修改字符集等配置】(5.7.18+版本也可参考,我是5.7.22)
  6. mybatis添加sql打印功能
  7. 【Flask】 python学习第一章 - 6.0 WTF表单 数据库 蓝图
  8. Linux之RHEL7root密码破解(一)
  9. python+BeautifulSoup+多进程爬取糗事百科图片
  10. python通过json读写序列类型的数据文件