malloc申请空间的问题。
#include "stdafx.h "
#include <malloc.h>
#include <string.h>
void delete_char(char * str, char ch)
{
char *newstr = (char *)malloc(strlen(str)+1);
char *str_p = str;
char *newstr_p = newstr;//这个地方为什么要将newstr赋给*newstr_p,
然后再对newstr_p进行操作,对newstr直接
进行操作就会报错呢?
while(*str_p)
{
if(*str_p == ch)
str_p++;
else
*newstr++ = *str_p++;
}
*newstr = '\0 ';
strcpy(str, newstr);//这个地方为什么要将newstr复制给str,
将newstr_p复制给str输出的值为什么为空呢?
free(newstr);
}
int _tmain(int argc, _TCHAR* argv[])
{
char a [] = "nijiushiyigehaoren ";
delete_char(a, 'i ');
puts(a);
return 0;
}
[解决办法]
free/delete时所使用的指针必须是new/malloc时返回的值,你后面修改了指针的值,则该指针就不能直接被free/delete了。这时为什么需要首先备份指针的原因
[解决办法]
newstr实际指向的是 '\0 '因为你已经修改了newstr向后移动了,当然他是空字符串