关于malloc的一个小疑点

关于malloc的一个小问题?
三次输出的内容是什么?为什么?

char   *c1   =   (char   *)malloc(128);
const   char   *c2   =   "123456 ";
strcpy(c1,c2);
cout   < <   c1;
char   *c1   =   (char   *)malloc(256);
cout   < <   c1   ;
strcat(c1,c2);
cout   < <   c1;



------解决方案--------------------
输出
123456
未知
未知

c1指向的字符串里没有结束符,
strcat,cout的结果都不确定