换种方法试试,用new,delete行不行?

解决方案 »

  1.   

    用new 和delete 
    不要用 malloc 和 free
      

  2.   

    用CString类生成一个动态的字符串对象吧!
    CString str;
    str.Format("hello csdn");
      

  3.   

    先看一下malloc是否成功了。
    另外你要仔细检查一下其它地方的代码,有可能是你在别处进行了内存非法操作,一直潜伏到这几句才暴露出来;单就这几句而论,是没问题的!我遇到过这样的问题,当时还以为c的库函数有bug,化了整整一天的时间终于找到了原因:确实在别处有非法操作!
      

  4.   

    答solar:就是这几句的问题,不信,你可以新建一个项目。关键是str++;这句有问题
      

  5.   

    char *str=(char *)malloc(100);
    strcpy(str,"hello csdn");char *p;
    p=str;
    p++;free(str);这样就没问题了
      

  6.   

    同意unionsoft(gm)。
    malloc在分配内存时,在你所得到的内存前还为free函数所需信息分配了空间。str++把指针移到后面去了,在释放时free函数找到的信息就是错的。当然出错了。