char *buf = new char[20]; char* newbuf = new char[len]; memset(newbuf,buf,strlen(buf)+1); delete[] buf; buf = newbuf; //这样写,是否存在内存泄露
[quote=引用 21 楼 menzi11 的回复:] [quote=引用 19 楼 windowpos 的回复:] [quote=引用 18 楼 menzi11 的回复:] [quote=引用 13 楼 windowpos 的回复:] delete[] buf; buf = newbuf; 已经删了buf,你还让他等于newbuf.你怎么敢这么写
[quote=引用 楼主 li744831579 的回复:] char *buf = new char[20]; char* newbuf = new char[len]; memset(newbuf,buf,strlen(buf)+1); delete[] buf; buf = newbuf; //这样写,是否存在内存泄露
[quote=引用 13 楼 windowpos 的回复:] delete[] buf; buf = newbuf; 已经删了buf,你还让他等于newbuf.你怎么敢这么写
[quote=引用 19 楼 windowpos 的回复:] [quote=引用 18 楼 menzi11 的回复:] [quote=引用 13 楼 windowpos 的回复:] delete[] buf; buf = newbuf; 已经删了buf,你还让他等于newbuf.你怎么敢这么写
[quote=引用 18 楼 menzi11 的回复:] [quote=引用 13 楼 windowpos 的回复:] delete[] buf; buf = newbuf; 已经删了buf,你还让他等于newbuf.你怎么敢这么写
delete[] buf; buf = newbuf; 已经删了buf,你还让他等于newbuf.你怎么敢这么写
楼主memset(newbuf,buf,strlen(buf)+1); //这句有错误吧,memset()参数2你这样给明显类型不对吧 还要你最后buf = newbuf; 这样复制,最后你释放怎么释放,buf,newbuf指向同一块内存,你释放了newbuf,但是buf还指着那块区域,但是已经没了,肯定会出异常,就像深拷贝问题一样 本人菜鸟一个,只是个人理解
如果没有特殊逻辑,这么写的coder应该罚款开除啊
64,654
社区成员
250,484
社区内容
加载中
试试用AI创作助手写篇文章吧