vc程序debug不知道为什么? help me

aoxue 2004-04-19 09:07:58
有一段代码每次运行都有错误提示,是错在那啊?我估计是new .delete出错了,是不是
要测试new,delete?
但不知道怎么改啊?for example:
#include<iostream>
#include<cstring>

using namespace std;

int main(void) {
const char *pc0 = "this is very long string";
char *pc1 = new char[100];

int lenth = strlen(pc0);
for(int ix = 0; ix < lenth; ix++) {
pc1[ix] = pc0[ix];
pc0++;
pc1++;
cout << "*pc0 = " << *pc0 << endl;
}

cout << "*pc1 = " << *pc1 << endl;

delete [] pc1;
return 0;
}
===============================================================
编译能通过,可运行就出问题了,编译器提示:
Debug Asserting Failed!

Program:c:/Program Files/microsoft Visual Studio/MyProject/stringVersion
/DEBUG/stringVersion.exe (这是我vc的安装路径)
File:dbgheap.c
line:100012

expression:CtrIsValidHeapPointer(pUserData)
For information on how yout program can cause an assertion failure
cee the visual c++ document on asserts .
(press retry debug the application)



...全文
50 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
aoxue 2004-04-19
  • 打赏
  • 举报
回复
嘿嘿
真是谢谢大家了
果然是这样:)
gufengduyu 2004-04-19
  • 打赏
  • 举报
回复
delete [] pc1;这句有问题
pc1现在并没有指向数组的开始位置,delete无法知道pc1数组的边界

应该在程序开始的时候定一个指向数组开头的指针
char *pc1 = new char[100];
char *pHead;//添加指针

pHead = pc1 ;

结尾改为:
delete [] pHead;


greensofter 2004-04-19
  • 打赏
  • 举报
回复
pc1已经不是声明时的位置了
char *pc1 = new char[100];改成char *p = pc1;
delete [] pc1;改成delete [] p;

2,586

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧