主题:内存错误问题请求解答
code=c]
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <stdlib.h>
char *my_strcpy(char *source)
{
char *target=(char *)malloc(sizeof(char));
if (NULL == target)
{
exit(1);
}
for(int i=0;i<strlen(source);i++)
{
*(target+i)=*(source+i);
}
*(target+i)='\0';
return target;
}
int main()
{
char *source=(char *)malloc(sizeof(char));
if (NULL == source)
{
exit(1);
}
source="asdfgh";
printf("%s\n",my_strcpy(source));
free(source);
source = NULL;
return 0;
}
/*]
* 运行到最后释放主函数里的source的内存时出错,为什么?
* char *my_strcpy(char *source)里的target所申请的内存空间应该也要手动释放吧,那怎么释放呢??就是free()语句写在什么地方啊,还是系统自动在调用函数结束后自动释放啊?
小弟初学,请求大家的帮助,谢谢
*/
[/code]
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <stdlib.h>
char *my_strcpy(char *source)
{
char *target=(char *)malloc(sizeof(char));
if (NULL == target)
{
exit(1);
}
for(int i=0;i<strlen(source);i++)
{
*(target+i)=*(source+i);
}
*(target+i)='\0';
return target;
}
int main()
{
char *source=(char *)malloc(sizeof(char));
if (NULL == source)
{
exit(1);
}
source="asdfgh";
printf("%s\n",my_strcpy(source));
free(source);
source = NULL;
return 0;
}
/*]
* 运行到最后释放主函数里的source的内存时出错,为什么?
* char *my_strcpy(char *source)里的target所申请的内存空间应该也要手动释放吧,那怎么释放呢??就是free()语句写在什么地方啊,还是系统自动在调用函数结束后自动释放啊?
小弟初学,请求大家的帮助,谢谢
*/
[/code]