c++内存释放问题出错了

2024-12-02 08:40:16
推荐回答(4个)
回答1:

delete []result;
result = NULL;
你把这两句颠倒一下
result = NULL;
delete []result;
就好了
原因 需要先将result指针置空 然后才能删除堆上分配给result的地址

回答2:

delete result;不要加[],加了[]代表释放的是一个指针数组,其次,%20是一个保留标识符,要保存一个%,得输入两个连续的%%

回答3:

result += (len + spacenum * 2 ); //而不是result += (len + spacenum * 2 +1);

另外Replace这样实现不就可以了
void Replace(char *ori)
{
while(*ori)
{
if(*ori == ' ')printf("%20");
else putchar(*ori);
++ori;
}
}

回答4:

不要这句了delete []result;