社区
C++ 语言
帖子详情
new 与delete 的问题
youlitai0116
2008-06-09 11:27:48
TCHAR* filename = new TCHAR[100];
………………
delete []filename;
filename= NULL;
这个有问题吗? 怎么会出现堆内存被破坏的情况,我的是vs2005,不会是编译器的原因吧 。
本人新手,别笑话啊!
...全文
71
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
打赏
举报
回复
帮顶
C++中
new
与
delete
问题
学习
C++中
new
与
delete
问题
学习 一.
new
char与
delete
问题
1.
问题
程序 #include using namespace std; void main() { char* des =
new
char(); des = "testing!"; cout;
delete
des; /
Vector的
new
与
delete
问题
先看一段代码: struct A; vector A_vect(5); for(int i = 0; i { A* pA =
new
A; A_vect.pus
new
/
delete
详解(跑路人笔记)<C++初阶>
文章目录前言
new
/
delete
内置类型举例自定义类型举例
new
失败operator
new
与operator
delete
现式调用构造函数
new
和
delete
的实现原理malloc/free和
new
/
delete
的区别小结 前言
new
和
delete
是C++为了类的使用方便而创造的...
浅谈 C++ 中的
new
/
delete
和
new
[]/
delete
[]
在 C++ 中,你也许经常使用
new
和
delete
来动态申请和释放内存,但你可曾想过以下
问题
呢?
new
和
delete
是函数吗?
new
[] 和
delete
[] 又是什么?什么时候用它们?你知道 operator
new
和 operator
delete
吗...
C++
new
与
delete
的使用
C++的
new
与
delete
1.
new
的运算符用法(关键字) 2.
new
的函数用法 3.定位
new
4.
new
创建对象 5.
delete
6.对于内置类型
new
/
delete
/malloc/free可以混用 7.使用注意事项
C++ 语言
64,646
社区成员
250,476
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章