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

字符串倒序,这个分配在堆上的空间是否释放了?解决办法

2012-02-09 
字符串倒序,这个分配在堆上的空间是否释放了?#includestdio.h#includemalloc.h#includestdlib.h#inc

字符串倒序,这个分配在堆上的空间是否释放了?
#include   <stdio.h>
#include   <malloc.h>
#include   <stdlib.h>
#include   <string.h>

char   *strtemp(char   *s);

int   main()
{
char   source[]   =   "abcdefg ";
char   *str;
str   =   (char*)malloc(100*sizeof(char));
memset(str, '\0 ',100*sizeof(char));
str   =   strtemp(source);
printf( "%s ",str);
free(str);
return   0;
}


char   *strtemp(char   *s)
{
int   i;
char   *temp;
char   *x;
char   *y;
int   len;
temp   =   (char*)malloc(100*sizeof(char));//这个是在何时释放的?还是根本就没有释放?
memset(temp, '\0 ',100*sizeof(char));
y   =   temp;
len   =   strlen(s);
x   =   s   +   len   -   1;
for(i   =   0;i   <   len;i++)
{
      *y++   =   *x--;  
}
*(y   +   len   +   1)   =   '\0 ';
return   temp;
}



[解决办法]
1,str = (char*)malloc(100*sizeof(char));
2,str = strtemp(source);//str的值已经改变了,不再指向1处的地址
3,free(str);//释放了在strtemp函数里分配的内存,而在1分配的内存则泄漏了

热点排行