社区
C++ 语言
帖子详情
在try{}里new 出来的变量,如果不delete的话,会内存泄露马?
darkone
2007-05-22 03:27:32
如下
try
{
Sap_var sap = new Sap;
//此处的sap需要delete吗?
}
catch(...)
{
printf("test");
}
...全文
309
8
打赏
收藏
在try{}里new 出来的变量,如果不delete的话,会内存泄露马?
如下 try { Sap_var sap = new Sap; //此处的sap需要delete吗? } catch(...) { printf("test"); }
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yoyo_alex_lw
2007-05-22
打赏
举报
回复
每一个new就要对应一个delete
taodm
2007-05-22
打赏
举报
回复
变量作用域问题。
try{}外面怎么可能看到try{}里面定义的局部变量嘛。
darkone
2007-05-22
打赏
举报
回复
但为什么在try{}外面delete sap会失败?
taodm
2007-05-22
打赏
举报
回复
每一个new就要对应一个delete
jianshi051
2007-05-22
打赏
举报
回复
似乎是动态内存分配里面遇到了异常都会不释放资源,造成所谓的内存泄露。
总之如果构造函数没有得到正常的完成的话,其析构函数也将得不到调用,并且后面的一系列的对象也将不能继续构造函数。
这里有一个例子,演示了当构造函数没有正常结束时不会调用相关联的析构函数。这个例子还显示了当在创建对象数组的过程中抛出异常时会发生什么情况:
#include<iostream>
using namespace std;
class Trace
{
static int counter;
int objid;
public:
Trace()
{
objid = counter ++;
cout<<"Constructing # "<<objid<<endl;
if(objid==3)
throw 3;
}
~Trace()
{
cout<<"Destructing # "<<objid<<endl;
}
};
int Trace::counter = 0;
int main()
{
try
{
Trace n1; //没有异常,完成构造
Trace array[5]; //第0,1号元素得到完全构造,但是之后的元素由于第2号元素构造失败,所以退出构造,第3,4号元素没有构造和析构。
Trace n2; //和上一句一样,由于抛出了异常,所以得不到构造,更加得不到析构。
}
catch(int i)
{
cout<<"caught "<<i<<endl;
}
return 0;
}
程序的输出结果为:
Constructing # 0
Constructing # 1
Constructing # 2
Constructing # 3
Destructing # 2
Destructing # 1
Destructing # 0
caught 3
或者可以用auto_ptr:
auto_ptr类模板是在头文件<memory>中定义的,它的构造函数接受一个指向类型属性的指针作为参数,它是一个用于封装指向分配的堆内存的指针。
珍惜生命远离CPP
2007-05-22
打赏
举报
回复
那在里new出来的都需要delete
WizardK
2007-05-22
打赏
举报
回复
new和delete必须匹配
mx19841031
2007-05-22
打赏
举报
回复
需要,不然内存泄漏
logging-slf4j2-jvm-1.5.0-sources.jar
logging-slf4j2-jvm-1.5.0-sources.jar
毕设&课设:多主题的智能文献检索系统.zip
经导师指导并认可通过的大作业设计项目源码,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。
Java源码-springboot前后分离框架45科研项目验收管理系统+MySQL毕设大作业源码.zip
本项目是基于Spring Boot前后分离框架构建的科研项目验收管理系统。该系统采用Java语言开发,结合MySQL数据库进行数据存储和处理。作为一个毕业设计的大作业项目,该系统旨在实现科研项目验收的信息化、规范化管理。 该项目的主要功能包括: 1. 用户管理:实现用户注册、登录、权限分配等管理功能。 2. 项目信息管理:实现科研项目的创建、编辑、查看和删除等操作。 3. 验收流程管理:实现项目验收的流程化管理,包括提交验收申请、审核、批准等步骤。 4. 数据统计与分析:对项目验收数据进行统计和分析,提供数据支持和管理决策。 该项目采用前后端分离的开发模式,前端采用现代流行的框架,提供良好的用户体验,后端采用Spring Boot框架,保证系统的稳定性和可扩展性。通过MySQL数据库,实现数据的持久化存储和高效查询。 毕设项目源码常年开发定制更新,旨在为需要的同学提供一个参考和学习的机
会
,帮助他们在开发类似系统时能够更快地掌握相关技术和方法。希望对需要的同学有帮助。
UE5安装包 - 虚幻5安装包 (Unreal Engine - Epic Games启动程序安装包)
《虚幻引擎5》是美国Epic公司于2020年公布的第五代跨平台游戏引擎,正式版于2022年4月5日发布,支持次世代主机、PC、移动端等平台开发。其核心技术包含Nanite虚拟几何体系统与Lumen动态全局光照解决方案,集成Chaos物理系统、Niagara特效等功能模块,实现高精度实时渲染与动态光照反馈。
iot1clickprojects-jvm-1.3.66.jar
iot1clickprojects-jvm-1.3.66.jar
C++ 语言
65,198
社区成员
250,522
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章