Chinaunix

标题: 菜鸟提问:为什么新分配的内存会有数据,长度还一直是3 [打印本页]

作者: 87607042    时间: 2011-06-28 16:20
标题: 菜鸟提问:为什么新分配的内存会有数据,长度还一直是3
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    char *tmp=(char *)malloc(14);
    printf("tmp is %s\n",tmp);
    printf("the length of the tmp is %d\n",strlen(tmp));
  
  system("PAUSE");       
  return 0;
}

结果:
tmp is P
the length of the tmp is 3
请按任意键继续. . .
作者: luckysir    时间: 2011-06-28 16:42
malloc函数不保证清0吧
calloc可以

具体细节man一下?
作者: hellioncu    时间: 2011-06-28 17:08
里面有啥都正常。
每次都一样,很可能是因为运行环境都没变化
作者: 87607042    时间: 2011-06-28 19:26
感谢ls,已经弄清楚原因了,使用malloc,最好结合memset一起使用。
作者: hellioncu    时间: 2011-06-29 09:56
感谢ls,已经弄清楚原因了,使用malloc,最好结合memset一起使用。
87607042 发表于 2011-06-28 19:26



    只有在真正需要的时候才memset,免得影响性能
作者: jimmyixy    时间: 2011-06-29 10:08
strlen遇到\0就结束了




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2