读书人

malloc

发布时间: 2012-03-15 11:50:39 作者: rapoo

求助malloc?
char *strca(char *dst, const char *src)
{
char *dst_t=NULL,*start=NULL;
dst_t=(char *)malloc(sizeof(dst)+sizeof(src));
printf("%d\n",sizeof(dst));
start=dst_t;
assert(dst && src);
while(*dst_t=*dst)
{
dst_t++;
dst++;
}
while(*dst_t=*src)
{
dst_t++;
src++;
}
//*dst_t='\0';
return start;
}

谁知道蓝色这行的作用,本函数实现的strcat函数,蓝色这行有什么用?
不要告诉我是为了避免野指针。我想知道为什么分配内存要分配两个参数指针和的大小空间?
要单单是为了避免野指针为什么只分配一个指针的空间不行?

[解决办法]
我觉得应该是
dst_t=(char *)malloc(strlen(dst)+strlen(src));
[解决办法]
我支持3楼。sizeof(dst)+sizeof(src)这个写法好奇怪。
[解决办法]
strcat();是连接两个字符串,那么目标字符串的空间需要总够大,至少是两个字符串的长度之和减去1,因为两个字符串有两个'\0';
[解决办法]
两个字符型指针变量,作用在于指向要传送的两个要连接的字符串。det_t=(char *)malloc(strlen(dst)+strlen(src))作用为动态分配足够存储两个字符串的存储空间。
[解决办法]
两个指针,当然要分配两个空间,dst_t++表示第二个指针了噻!!
[解决办法]

探讨

我觉得应该是
dst_t=(char *)malloc(strlen(dst)+strlen(src));

[解决办法]
dst_t=(char *)malloc(strlen(dst)+strlen(src));吧

读书人网 >C语言

热点推荐