我用的是VC++6.0
在写一个函数时用以下代码:
char *p=NULL;
p = new char[64];
memset(p,0,64);
strcpy(p,"");
.........
.......
strcpy(p,"lasfjlsdj");
delete [] p;在用单步执行执行到这里时报错为“unhandled exception in test.exee:0xc0000005:Access Violation"在Debug版本运行就报:”0x00459a3d指令引用“xdddddde1"内在。该内存不能为”written"
这是什么原因造成的!把delete[] p去了后就没问题
在写一个函数时用以下代码:
char *p=NULL;
p = new char[64];
memset(p,0,64);
strcpy(p,"");
.........
.......
strcpy(p,"lasfjlsdj");
delete [] p;在用单步执行执行到这里时报错为“unhandled exception in test.exee:0xc0000005:Access Violation"在Debug版本运行就报:”0x00459a3d指令引用“xdddddde1"内在。该内存不能为”written"
这是什么原因造成的!把delete[] p去了后就没问题
实在不行就
if (p!=NULL) delete[] p;
在没有
memset(p,0,64);
strcpy(p,"");
.........
运行时报的是DebugError有时候,什么Damage:after normal block (#326171)at 0x01491700
{
delete [] p;//这里还是出现 unhandled exception in Test.exe:0xc0000005:AccessViolation
p == NULL;
}
{
delete [] p;//这里还是出现 unhandled exception in Test.exe:0xc0000005:AccessViolation
p == NULL;
}
#include <string.h>
void main()
{
char *p=NULL;
p = new char[64];
memset(p,0,64);
strcpy(p,"");
strcpy(p,"lasfjlsdj");
delete [] p;
}
没有错误啊。
原因肯定在你的
.........
.......
里面。