首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

malloc申请空间的有关问题

2012-02-09 
malloc申请空间的问题。#includestdafx.h #include malloc.h#include string.hvoiddelete_char(char*

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向后移动了,当然他是空字符串

热点排行