首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

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

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

热点排行