读书人

malloc函数返回字节大小的有关问题

发布时间: 2012-04-27 11:57:44 作者: rapoo

malloc函数返回字节大小的问题?
//代码如下
//就是把两个字符串的长度作为另一个新字符串的长度

#include <stdio.h>
#include <malloc.h>
#include <string.h>

char *str;
char *function(char *str1, char *str2)
{
int n1 = strlen(str1);
int n2 = strlen(str2);
str = (char *)malloc(n1+n2+1);
printf("%d\n",n1);
printf("%d\n",n2);
printf("%d\n",strlen(str));

return *str3;
}

int main()
{
char a[10] = "Hello";
char b[10] = "kitty";
function(a,b);
}

a是五个字符,b也是5个字符,所以strlen(str)的值应该是5+5+1等于11啊!
但是我用VS2005和Dev-C++调试的时候,strlen(str)的值都是24。
这是怎么回事?
是编译器的原因吗?

[解决办法]
你可以这样

C/C++ code
#include  <stdio.h > #include  <malloc.h > #include  <string.h > char *str; char *function(char *str1, char *str2) {     int n1 = strlen(str1);     int n2 = strlen(str2);         str = (char *)malloc(n1+n2+1);         printf("%d\n",n1);     printf("%d\n",n2); /*    memset(str,0,n1+n2+1);    strcat(str,str1);    strcat(str,str2);;    printf("%d\n",strlen(str)); */    printf("%d\n",_msize(str));             return str; } void main() {     char a[10] = "Hello";     char b[10] = "kitty";     function(a,b); } 

读书人网 >C++

热点推荐