为何不能这样delete?
下面是一段代码:
char* names = new char[200];
memset(.........);
memcpy(names, hisname, 200);
使用names变量做的一些事情
delete [] names;
如果是DEBUG版本,则会出现Debug Error。不知道是为什么?我将memcpy换成了strcpy,其结果也一样。
问题点数:0、回复次数:10Top
1 楼afc(afc)回复于 2003-08-02 21:59:15 得分 0
会不会是在 "使用names变量做的一些事情" 的时候把names修改了Top
2 楼zerphy(笑笑生)回复于 2003-08-03 00:22:51 得分 0
完整代码看一下,还有出错信息……Top
3 楼harrypotter(哈里*波特)回复于 2003-08-03 08:51:21 得分 0
没看明白哪儿出错了,
完整代码和出错信息。Top
4 楼newlife2002_313(永恒新生)回复于 2003-08-03 09:42:48 得分 0
就贴出的代码没有错误。
是不是你在操作中改变了names的值?
把错误信息贴出来。Top
5 楼ForFar()回复于 2003-08-03 13:23:36 得分 0
hisname是怎么定义的,是不是它的大小没有到200Top
6 楼Riemann()回复于 2003-08-03 14:13:39 得分 0
有可能是修改了names的内容。Top
7 楼lyzcom(初学者)回复于 2003-08-06 21:00:21 得分 0
to afc(afc)
会不会是在 "使用names变量做的一些事情" 的时候把names修改了
这句话如何说?你所说的修改是怎么个修改法?我确定修改了names变量,但是,只是修改了其值。
错信息没法贴。是在运行时期,当程序运行到这一步的时候,才出现错误的。而且只有DEBUG版本才会出现该错误。错误信息提示是一个窗口,其大概内容是:程序在0xXXXXXXXX位置不能读(写)Top
8 楼AkiraChing(水银)回复于 2003-08-06 21:08:07 得分 0
会不会是访问越界,就是说你访问了names[199]之外的地址,也就是说你的names不够大呢,改为1024试试看会不会出错啊Top
9 楼zhzhh1972(张san)回复于 2003-08-06 21:13:23 得分 0
一定是hisname变量所指向的空间小于200。Top
10 楼yangchaobj()回复于 2003-08-06 21:17:16 得分 0
不一定就是names本身出错,有可能是别的变量越界了,把names给冲了。Top



