这样会造成内存泄漏吗?如果没有,有谁知道他的原理?char *p_char = (char *)malloc(10);
p_char++; //p_char
free(p_char)

解决方案 »

  1.   

    这样会造成内存释放不了,应该会有内存泄漏。调用free()方法,在debug模式下会出现ASSERT(FALSE)的错误提示,release模式下就相当于什么事也没做。
      

  2.   

    基本上运行到free就会报错了。不用等到泄漏
      

  3.   

    是呀,我测试了,再debug模式下在 p_char++ 上出错!
    但下面的代码运行:
    char *p_char = (char *)malloc(10);
    p_char = (char *)0x1234;
    p_char++;
    这个代码里面 p_char++; 是可以运行的!
    从系统的角度来讲,两条 p_char++; 语句执行的操作应该是一样的, 都只是地址+1;为什么一个运行,另外一个就不行了呢?
      

  4.   

    不好意思,刚才说错了,是在 free中出错!
      

  5.   

    你用new啊!
    char *p_char=new char[10];
    用完后一定要用delete[] char;
    释放啊!不知道能不能帮到你.我只会这些
      

  6.   

    在用之前保存一下 new 出的指针的值或是 malloc 返回的地址的值不就OK了。