C++ delete [] 与 delete
简介
对于普通数据类型数组 使用 delete [] pa 和 delete pa, 都不会产生内存泄露. 对于自己定义的对象数组, 会产生内存泄露.
环境
g++ , valgrind 来查看是否产生了内存泄露
参考链接
https://www.cnblogs.com/sura/archive/2012/07/03/2575448.html
code
#include <iostream>
#include <ctime>
#include <algorithm>
#include <stdlib.h>
#include <vector>
#include <string>
#include <sstream>
#include <map>
#include <unordered_set>
#include <set>
#include <unordered_map>
#include <limits>
#include <stack>
#include <list>
#include <queue>
using LL = long long;
using ULL = unsigned long long;
//using PII = pair<int,int>;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
const int dir[4][2] = {{1,0},{-1,0},{0,1},{0,-1}};
using namespace std;
// 大于等于k的最小整数
class Test{
public:
int a;
Test() {
a = 0;
}
~Test(){
cout << "~Test()" << endl;
}
};
int main() {
int *p = new int[5];
cout << sizeof(p) << endl;
delete p;
int *pa = new int[5];
cout << sizeof(pa) << endl;
delete [] pa;
Test *pb = new Test[5];
cout << sizeof(pb) << endl;
delete [] pb;
Test *pc = new Test[5];
cout << sizeof(pc) << endl;
delete pc; // 会导致内存泄露 且出现段错误 segmentation fault (core dumped)
/*
==207912== LEAK SUMMARY:
==207912== definitely lost: 28 bytes in 1 blocks
==207912== indirectly lost: 0 bytes in 0 blocks
==207912== possibly lost: 0 bytes in 0 blocks
==207912== still reachable: 0 bytes in 0 blocks
==207912== suppressed: 0 bytes in 0 blocks
*/
return 0;
}
TIP
这里显示的sizeof都是8显示的都是指针的大小. 因为是64位系统, 使int达到了8个字节的长度.
C++ delete [] 与 delete的更多相关文章
- 【转】 C++中delete和delete[]的区别
一直对C++中的delete和delete[]的区别不甚了解,今天遇到了,上网查了一下,得出了结论.做个备份,以免丢失. C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete ...
- C++:delete和delete[]释放内存的区别
C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[]. 关于 new[] 和 delete[], ...
- C++中delete和delete[]的区别
C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[]. 关于 new[] 和 delete[],其中又 ...
- 关于delete和delete[]
[精彩] 求问delete和delete[] 的区别??http://www.chinaunix.net/jh/23/311058.html C++告诉我们在回收用 new 分配的单个对象的内存空间的 ...
- svn local delete, incoming delete upon update 解决办法
经常有人会说,树冲突是很难解决的一类冲突,其实一旦了解了其原理,要解决也不难.先回顾下对于树冲突的定义. 树冲突:当一名开发人员移动.重命名.删除一个文件或文件夹,而另一名开发人员也对它们进行 ...
- C++中delete 和delete[]的区别
c++告诉我们在回收new分配的单个对象的内存空间的时候用delete, 回收new[ ]分配的一组对象的内存空间的时候用 delete[ ]; #include <iostream> ...
- C++ delete 和 delete []
C++ delete 和 delete [] 简单结论: new delete new [] delete [] 文章 : 对 delete [] 的声明 void operator delete ...
- 为什么new的普通数组用delete 和 delete[]都能正确释放
由同事推荐的一篇博客: 为何new出的对象数组必须要用delete[]删除,而普通数组delete和delete[]都一样-------_CrtMemBlockHeader 文章解释了delete 内 ...
- C++ 中 delete 和 delete[] 的区别
一直对 C++ 中 delete 和 delete[] 的区别不甚了解,今天遇到了,上网查了一下,得出了结论.做个备份,以免丢失. C++ 告诉我们在回收用 new 分配的单个对象的内存空间时用 de ...
- svn conflicts: local delete, incoming delete upon update
svn st查看更新的时候发现存在conflicts,提示很多 local delete, incoming delete upon update , $:svn st ? C IMIRROR.T3 ...
随机推荐
- Java程序员的Go入门笔记
系列文章目录和关于我 0.背景 3年java开发背景(因此这篇文章的特点是:比较适合java程序员doge),业余时间有了解过一些go,如今主要技术栈是go,此篇主要结合go语言圣经和团队内go项目, ...
- thinkphp 3.2的一些笔记
1.基础操作"::"语法.A()方法 2.php与js混写实现ajax无刷新执行控制器的方法 3.session的使用,通过session验证用户登录状态 4.使用UTFWry.d ...
- Cgroup之内存子系统
Memory 子系统主要完成两件事: (1)控制一组进程使用内存资源的行为: (2)统计 cgroup 内进程使用内存资源的信息.在实际业务场景中,主要是为了避免某些应用大量占用内存资源(可能是由于内 ...
- 开发者专用部署工具PasteSpider的V5正式版发布啦!(202504月版),更新说明一览
PasteSpider是一款以开发者角度设计的部署工具,支持把你的项目部署到Windows或者Linux服务器,支持5大模式Windows(IIS/Service),Linux(systemd),Do ...
- HttpServletRequest相关
简介 获取客户端请求头及参数 获取提交给服务器的中文数据 简介 这个对象封装了客户端提交过来的一切数据. 获取客户端请求头及参数 package com.zhujunwei.httpServletRe ...
- 首发 最新AWVS/Acunetix Premium V24.8高级版漏洞扫描器(最新版)Windows/Linux下载
前言 Acunetix Premium 是一种 Web 应用程序安全解决方案,用于管理多个网站.Web 应用程序和 API 的安全.集成功能允许您自动化 DevOps 和问题管理基础架构. Acune ...
- 鸿蒙 NEXT(二):API12 带来的变革与创新
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...
- 探索Rust:所有权和借用的魅力与应用
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...
- vue之sync
在 Vue 中,.sync 是一个用于实现双向数据绑定的特殊修饰符.它允许父组件通过一种简洁的方式向子组件传递一个 prop,并在子组件中修改这个 prop 的值,然后将修改后的值反馈回父组件,实现双 ...
- 玩转代码:深入GitHub,高效管理我们的“shou学”平台源代码
玩转代码:深入GitHub,高效管理我们的"shou学"平台源代码 在当今快节奏的开发世界中,有效地管理代码不仅仅是一种良好实践,更是一种必需.无论您是独立开发者还是大型团队的一员 ...