求救数组与指针的区别
char* Cat_String(char *dest,char *source)
{
char *p = new char[1];
char *ss = p;
//char ss[100];
//char *p = ss;
while(*dest)
{
*p++ = *dest++;
}
while(*source)
{
*p++ = *source++;
}
*p = '\0';
p = ss;
return p;
}
int main()
{
char *str1 = (char *)malloc(10);
sprintf_s(str1,5,"aabb");
char *str2 = "bb";
char *buf = Cat_String(str1,str2);
printf("%s\r\n",buf);
free(str1);
return 0;
}
在Cat_String()里面如果将前2行换成注释的代码,运行结果就不对了。求解
[解决办法]
char *p = new char[1];是在堆上申请空间 不随函数结束而释放
char ss[100]; 栈上申请的空间,函数结束后就释放了
[解决办法]
空间释放不同
[解决办法]
http://blog.csdn.net/supermegaboy/article/details/4855027
[解决办法]
建议你看看本坛supermegaboy的博客,里面解释得很详细了。