麻烦大家帮小弟我看个函数,一运行不return 正常,return就直接退出,好奇怪

麻烦大家帮我看个函数,一运行不return 正常,return就直接退出,好奇怪啊
定义了一个函数并声明

char* MakeCStringToChar(CString str)
{
char* test;
test=(char*)malloc(str.GetLength()*sizeof(char));   
strcpy(test,str);
return test;
}





CString zb_name1[3];
zb_name1[0]="dk_csys";
char ds1[100];

sprintf(ds1,"%d",kl);

zb_name1[1].Format("%s",ds1);
zb_name1[2]=zb_name1[0]+zb_name1[1];
char *te;
te=MakeCStringToChar(zb_name1[2]);//就是这句在这之前return就OK这句之后return就直接退出



------解决方案--------------------
没给结束符留位置
str.GetLength()+1