删除字符数组
这个问题与此问题有关。鉴于此代码:
char *p = new char[200];
delete[] p;
如果在删除p之前设置p[100] = ' '
会发生什么?
我有一些代码,当我试图删除一个非空终止的char数组时,我收到了一个调试错误,这是关于删除未分配的堆内存。它似乎从数组的边界中删除了内存。
没有找到相关结果
已邀请:
7 个回复
到街客核
是完全有效的C ++。 delete不知道或不关心以null结尾的字符串,因此您的错误必须有其他原因。
妒垮
现在,发生的是默认构造函数被调用一次,并且创建的对象被复制零次或多次。但是为每个创建的副本运行析构函数。因此,您将多次调用指针上的析构函数,从而导致此类奇怪的错误。解决这个问题的正确方法是使用智能指针,如
。作为练习,您也可以通过编写适当的复制构造函数来复制对象并在复制构造函数中分配内存,以便复制和相应的原始对象保持不同的指针。
朗排谎纷瘟
视为C样式字符串的函数相关。
社攻取墟槽
谦响局豢报
,
等,但这完全是另一回事。
物崎巩
的值引起的。
qq1596058469