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); }