社区
C++ 语言
帖子详情
new 与delete 的问题
youlitai0116
2008-06-09 11:27:48
TCHAR* filename = new TCHAR[100];
………………
delete []filename;
filename= NULL;
这个有问题吗? 怎么会出现堆内存被破坏的情况,我的是vs2005,不会是编译器的原因吧 。
本人新手,别笑话啊!
...全文
104
11
打赏
收藏
new 与delete 的问题
TCHAR* filename = new TCHAR[100]; ……………… delete []filename; filename= NULL; 这个有问题吗? 怎么会出现堆内存被破坏的情况,我的是vs2005,不会是编译器的原因吧 。 本人新手,别笑话啊!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fallenbluefire
2008-06-09
打赏
举报
回复
TCHAR* filename = new TCHAR[100]; // 将new TCHAR[100]的一个地址给filename ,比如0x00002
// filename=filenamecs.GetBuffer(filenamecs.GetLength()); // 这句话错了,因为把filename 的地址该了,可能改成了0xA0002
memcpy(filename,filenamecs.GetBuffer(filenamecs.GetLength()),filenamecs.GetLength()) ; //应该要用这句话,不能改filename 的地址
delete []filename; // 如果你把filename 地址改成了filenamecs.GetBuffe返出来的地址,现在你去delete他的内容,当然错了
youlitai0116
2008-06-09
打赏
举报
回复
谢谢 大家 结贴给分!
fhb13
2008-06-09
打赏
举报
回复
绝对没错!
雨过白鹭洲
2008-06-09
打赏
举报
回复
问问MS VS 2005。。
youlitai0116
2008-06-09
打赏
举报
回复
我调试的时候就是 在delete []filename; 这里出错。
把整段代码都贴上来,大家帮忙看看;
是用vs2005 mfc ,实现选一个文本文件,ondakai函数把它复制到指定的文件夹c:\\TextRO\\下
void ClujingView::Ondakai()
{
CFileDialog myDlg(TRUE, NULL, NULL, 0, _T("txt|*.txt||"));
myDlg.DoModal();
CString filenamecs = myDlg.GetFileName();
TCHAR* filename = new TCHAR[100];
filename=filenamecs.GetBuffer(filenamecs.GetLength());
TCHAR szNewPath[MAX_PATH];
TCHAR szDirPath[] = TEXT("c:\\TextRO\\");
CreateDirectory(szDirPath, NULL);
lstrcpy(szNewPath,szDirPath);
lstrcat(szNewPath,filename);
DWORD dwAttrs;
CopyFile(filename,szNewPath,FALSE);
dwAttrs = GetFileAttributes(filename);
SetFileAttributes(szNewPath, dwAttrs | FILE_ATTRIBUTE_READONLY);
filenamecs.ReleaseBuffer();
delete []filename;
filename= NULL;
//Invalidate();
}
fallenbluefire
2008-06-09
打赏
举报
回复
你可以搜索一下你的程序里有几个delete有几个new,
如果你找出来8个delete,7个new那么恭喜你你写错了
如果你找出来new和delete的数量相同
那么你看看带[]的new是不是都用带[]delete了,不带[]的new是不是都用不带[]delete了
要是这样都没错,你应该再看看有没有反复delete的指针,比如你把filename delete了100遍。
iu_81
2008-06-09
打赏
举报
回复
没有问题
别的地方的问题吧
kkndciapp
2008-06-09
打赏
举报
回复
对的
fibbery
2008-06-09
打赏
举报
回复
应该没有问题吧!
shtianhai
2008-06-09
打赏
举报
回复
提供参考,在VC6.0下
void main()
{
char* filename = new char[100];
delete []filename;
filename= NULL;
}
没有错误!
jzzlo
2008-06-09
打赏
举报
回复
帮顶
malloc free与
new
delete
混用的
问题
博客主要探讨了malloc free与
new
delete
混用的
问题
。对malloc申请的空间用
delete
释放,因malloc不调用构造函数、
delete
调用析构函数,会引发异常;对
new
申请的空间用free释放,因free不调用析构函数,会导致内存泄漏。
C++中
new
与
delete
问题
学习
本文深入探讨了C++中
new
与
delete
的使用,包括char与int类型的内存分配与释放,详细解释了内存泄露的
问题
,并提供了正确的代码示例。同时,文章还总结了
new
与
delete
的正确使用方法,避免常见的编程陷阱。
Vector的
new
与
delete
问题
本文通过一个具体的代码示例,分析了C++中内存泄漏的
问题
,特别关注
new
与
delete
操作符的正确使用方式,并讨论了vector容器如何进行内存管理。
new
、
delete
和malloc、free详解与混用
问题
本文深入探讨C++中
new
、
new
[]、
delete
、
delete
[]与C语言malloc、free的区别及实现机制,解析重载操作符的意义,并通过实例演示混用规则。
DLL与EXE之间的内存
new
与
delete
上的
问题
本文探讨了在使用DLL时遇到的内存管理
问题
,特别是当EXE和DLL都使用/MT选项编译时,在不同堆空间中
new
和
delete
操作引起的崩溃。通过调整代码确保DLL和EXE各自管理自己的内存,解决了这一
问题
。
C++ 语言
65,211
社区成员
250,515
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章