c++ new(不断跟新)
1.基础知识
/*
可以定义大小是0的数组,但不能引用,因为没有指向任何对象
new string[10]调用类的默认构造函数
new int[10]没有初始化,但new int[10]()会将数组初始化成0,返回第一个元素的首地址
*/
#include <iostream>
#include <string>
using namespace std;
int main()
{
#if 0
//int* psa = new int[10](89);//不能这样初始化
int* psa = new int[]();//只能初始化成0
for (int i = ; i < ; ++i)
{
cout<<psa[i];
}
#endif
/*
类类型总是会调用默认构造函数进行初始化,不管有没有显示的初始化
内置类型或者没有定义默认构造函数的类则不同
new失败抛出bad_alloc异常
delete pi;//删除一个对象
delete []pi;//删除一个数组
内存泄露:听着挺霸气的,其实就是删除分配的内存失败
*/
#if 1
const int* pci = new const int();//const必须初始化,对于没有提供默认的类或者内置的类型则失败,动态分配const用处不大
string* ps = new string("");
int* pi = new int;
int* pi2 = new int();
#endif
system("pause");
}
2.placement new
#include <iostream>
using namespace std; struct MyStruct
{
int s;
};
int main()
{
void* addr = new MyStruct;//缓冲区地址,大小为mysturct的大小
//在缓冲区上分配内存,调用placement new,placement new重载operator new
//这句相当于把addr看成int类型的指针,然后调用要调用对象的构造函数,返回值还是addr的值
//其实就是在缓冲区上分配一块内存,然后返回这块缓冲的指针
int * naddr = new (addr)int;
*naddr = ;
cout << *naddr;
getchar();
}
3.容易忘记delete
class MyClass
{
public:
void init()
{
ptr = new int;
} public:
int* ptr;
};
#include <iostream>
#include <vld.h>
#include <windows.h>
int main()
{
while (true)
{
MyClass* ptr = new MyClass;
ptr->init();
delete ptr->ptr;
delete ptr;
Sleep();
}
getchar();
return ;
}
需要把成员函数中new的delete掉,不然会内存泄露
c++ new(不断跟新)的更多相关文章
- 读书笔记:《HTML5开发手册》--HTML5新的结构元素
读书笔记:<HTML5开发手册> (HTML5 Developer's CookBook) 虽然从事前端开发已有很长一段时间,对HTML5标签也有使用,但在语义化上面理解还不够清晰.之前在 ...
- UWP中新加的数据绑定方式x:Bind分析总结
UWP中新加的数据绑定方式x:Bind分析总结 0x00 UWP中的x:Bind 由之前有过WPF开发经验,所以在学习UWP的时候直接省略了XAML.数据绑定等几个看着十分眼熟的主题.学习过程中倒是也 ...
- “四核”驱动的“三维”导航 -- 淘宝新UI(需求分析篇)
前言 孔子说:"软件是对客观世界的抽象". 首先声明,这里的"三维导航"和地图没一毛钱关系,"四核驱动"和硬件也没关系,而是为了复杂的应用而 ...
- 一次修改闭源 Entity Provider 程序集以兼容新 EntityFramework 的过程
读完本文你会知道,如何在没有源码的情况下,直接修改一个 DLL 以去除 DLL 上的强命名限制,并在该程序集上直接添加你的“友元程序集(一种特殊的 Attribute,将它应用在程序集上,使得程序集内 ...
- 最新 去掉 Chrome 新标签页的8个缩略图
chrome的新标签页的8个缩略图实在让人不爽,网上找了一些去掉这个略缩图的方法,其中很多已经失效.不过其中一个插件虽然按照原来的方法已经不能用了,但是稍微变通一下仍然是可以用的(本方法于2017.1 ...
- SQL Server 2014 新特性——内存数据库
SQL Server 2014 新特性——内存数据库 目录 SQL Server 2014 新特性——内存数据库 简介: 设计目的和原因: 专业名词 In-Memory OLTP不同之处 内存优化表 ...
- HTML5 input元素新的特性
在HTML5中,<input>元素增加了许多新的属性.方法及控件.本文章分别对这三方面进行介绍. 目录 1. 属性 2. 方法 3. 新控件 1. 属性 <input>元素在H ...
- ElasticSearch 5学习(10)——结构化查询(包括新特性)
之前我们所有的查询都属于命令行查询,但是不利于复杂的查询,而且一般在项目开发中不使用命令行查询方式,只有在调试测试时使用简单命令行查询,但是,如果想要善用搜索,我们必须使用请求体查询(request ...
- CoreCRM 开发实录——开始之新项目的技术选择
2016年11月,接受了一个工作,是对"悟空CRM"进行一些修补.这是一个不错的 CRM,开源,并提供一个 SaaS 的服务.正好微软的 .NET Core 和 ASP.NET C ...
- 微软新神器-Power BI横空出世,一个简单易用,还用得起的BI产品,你还在等什么???
在当前互联网,由于大数据研究热潮,以及数据挖掘,机器学习等技术的改进,各种数据可视化图表层出不穷,如何让大数据生动呈现,也成了一个具有挑战性的可能,随之也出现了大量的商业化软件.今天就给大家介绍一款逆 ...
随机推荐
- (八)Oracle学习笔记—— 触发器
1. 触发器简介 触发器在数据库里以独立的对象存储,类似于过程(procedure)和函数(function),都有声明,执行和异常处理过程的PL/SQL块.它与存储过程和函数不同的是,存储过程与函数 ...
- 数据库表syscolumns 各个字段含义 select * from syscolumns where name='textA'
每个数据库创建后都会有一些系统表用来存储该数据库的一些基本信息 每个表和视图中的每列在表中占一行,存储过程中的每个参数在表中也占一行.该表位于每个数据库中. 列名 数据类型 描述 name sysna ...
- jquery.zclip实现点击拷贝文字功能
<script type="text/javascript" src="http://www.sitejs.cn/templets/skins/js/jquery- ...
- 优化数据页面(22)——n:n的数据关系
设计要点:优化数据页面.界面设计.美化exce 阿金:那n::n就复杂了,你倒是想留有空间. 可是现实社会有时却不同意. 秀秀:唉.说的也是. 阿金:那怎么表达才合适啊? 秀秀:仅仅实用网格了. 阿金 ...
- Atitit.分区对索引的影响 分区索引和全局索引 attilax总结
Atitit.分区对索引的影响 分区索引和全局索引 attilax总结 1. 分区的好处1 2. 分区键:2 3. 分区的建议:2 4. 分区索引和全局索引:2 5. 全局索引就是在全表上创建索引, ...
- Codeforces Round #238 (Div. 2) D. Toy Sum
D. Toy Sum time limit per test:1 second memory limit per test:256 megabytes input:standard input o ...
- sqoop从hdfs 中导出数据到mysql
bin/sqoop export \ --connect "jdbc:mysql://mini1:3306/study?useUnicode=true&characterEncodi ...
- 折腾WordPress感想
以前在cnblogs上写博客没感觉什么,一旦要搭建自己的博客,我感觉好麻烦啊,具体就体现在一下方面: 1. 域名得要申请 2. 还要购买虚拟机 3. 自己搭建php,mysql,wordpress,a ...
- linux镜像空间
硬件采用nandflash,nandflash为8位数据宽度,没有dataflash和norflash. Nandflash空间分配为 bootstrap + u-boot + env + linux ...
- 简单的SpringCloud 熔断Hystrix
pom配置 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId> ...