回 帖 发 新 帖 刷新版面

主题:new出来的字符指针,我用strcpy一个const字符串进去后,在我delete时会出错...

我是这样做的
char* outs = new char(len + 100); 
strcpy(outs, "hello");
delete outs; //这里释放outs指向的内存因为是常量,会必然出错

所以我改成
outs = NULL;
delete outs;
这些代码是放在一个函数里的,这个函数能够执行正常,回到main函数后,下面代码也执行正常,但在main执行完成,就会出现一个内存write的错误,我做了定位,就是在我做的new和delete这里出的内存错误....
我搞晕了!![em10][em10]

回复列表 (共2个回复)

沙发

不知道楼主这样(new char(len + 100))写是什么意图。到底是要new一个char类型变量,并赋初值为len+100呢,还是要请求一块大小为(len + 100)的存储空间(字符数组)?如果是后者,上边的写法就有问题,应该改为:

  char* outs = new char[100]; 
  strcpy(outs, "hello");
  delete []outs;

还有,像下边这样写
outs = NULL;
delete outs;
会造成leak,直接写delete outs;即可。

板凳

多谢LS,我一直没注意我new的原来是赋初值了,我是需要一块数组的....
我自己被自己搞晕了....

我来回复

您尚未登录,请登录后再回复。点此登录或注册