关于指针类型new得很奇怪的有关问题

关于指针类型new得很奇怪的问题
char   *p1=new   char[159];
                  cout < <strlen(p1);
输出177
char   *p1=new   char[10];
                  cout < <strlen(p1);
输出17

char   *p1=new   char[10*sizeof(char)];
                  cout < <strlen(p1);
依然是17   这是咋回事?


------解决方案--------------------
strlen(p1);
strlen是计算p1开始到结束符\0的字符数
你new之后没有字符数组值是随机的
所以函数结果并不一定是字符数组的长度
------解决方案--------------------
char *p1=new char[159];
cout < <strlen(p1);
===>
1. p1分配了内存, 但没有初始化每个char的值!
2. strlen()求的是以 '\0 '结尾的字符串的长度, 而p1中的char没有哪个char的值初始化为
'\0 ', 所以结果是随机的!