计算机C语言编程问题

这个程序总是能运行,就是会出现窗口”Debug error“,这是怎么了?
#include "stdafx.h"
#include<stdio.h>
#include<conio.h>
#include<malloc.h>
char *linkStr(char *s1,char *s2){
char *s3;
int len1=0,len2=0;
char *p,*p3;
p=s1;
while (*p++);
len1=p-s1-2;
p=s2;
while (*p++);
len1=p-s2-2;
s3=(char*)malloc(len1+len2+1);
p=s1;p3=s3;
while(*p)(*p3++)=(*p++);
p=s2;
while(*p)(*p3++)=(*p++);
*p3 = '\0';
return s3;
}
int main(int argc, char* argv[])
{
char *s1="dfasegaerg";
char *s2="36837413431";
puts(linkStr(s1,s2));
free(linkStr(s1,s2));
getch ();
return 0;
}

free(linkStr(s1,s2))有错!不能这么干!linkStr里边的malloc在函数分配的空间在函数执行完毕后被释放了。也就无从free,所以报错。你可以用引用或指针的指针进行传递。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-25
这种问题一般是数组越界了,自己检查一下吧
第2个回答  2014-11-25
第一次长度len1=p-s1-1就行了吧,同样第二次len2=p-s2-1
相似回答