求助简单的问题
时间:2010-09-06
来源:互联网
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SIZE 255
void copy(char *str,int len)
{
char *p=str;
char *string2=NULL;
string2=(char *)malloc(len+1);
while (*p!='\0')
{
*string2++=*p++;
}
printf("The string2 is :\n %s\n ",string2);
free(string2);
}
void main()
{
char string1[SIZE];
printf("Please input a string\n");
gets(string1);
printf("The string1 is : \n %s\n ",string1);
int length=strlen(string1);
copy(string1,length);
}
为什么运行的时候有问题,
#include <string.h>
#include <stdlib.h>
#define SIZE 255
void copy(char *str,int len)
{
char *p=str;
char *string2=NULL;
string2=(char *)malloc(len+1);
while (*p!='\0')
{
*string2++=*p++;
}
printf("The string2 is :\n %s\n ",string2);
free(string2);
}
void main()
{
char string1[SIZE];
printf("Please input a string\n");
gets(string1);
printf("The string1 is : \n %s\n ",string1);
int length=strlen(string1);
copy(string1,length);
}
为什么运行的时候有问题,
作者: mafuli007 发布时间: 2010-09-06
free(string2);这时string2已经被前面循环中++了
作者: hellioncu 发布时间: 2010-09-06
回复 hellioncu
这句没问题吧,打印出来释放掉啊
这句没问题吧,打印出来释放掉啊
作者: mafuli007 发布时间: 2010-09-06
仔细阅读2楼回复
作者: net_robber 发布时间: 2010-09-06
QUOTE:
回复 hellioncu
这句没问题吧,打印出来释放掉啊
mafuli007 发表于 2010-09-06 13:35
这句没问题吧,打印出来释放掉啊
mafuli007 发表于 2010-09-06 13:35
free的指针必须是malloc之类函数的返回值,你++都把指针值改了
作者: hellioncu 发布时间: 2010-09-06
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28