下面三种使用子函数进行开辟内存赋值的操作,哪种是安全的?
int SetValue1(char **buff)
{
*buff=new char[1024];
strcpy(*buff,"This is first string");
return 0;
}
int SetValue2(char **buff)
{
char * tmp_buf;
tmp_buf=new char[1024];
strcpy(tmp_buf,"This is second string");
buff=&tmp_buf;
return 0;
}
int SetValue3(char **buff)
{
char *tmp_buf;
tmp_buf=new char[1024];
strcpy(tmp_buf,"This is third string");
*buff=tmp_buf;
return 0;
}
int main()
{
char * buff;
SetValue1(&buff);
printf("The first buff data length=%d, data: %s /n",strlen(buff),buff);
delete []buff;
SetValue2(&buff);
printf("The second buff data length=%d, data:%s/n",strlen(buff),buff);
delete[]buff;
SetValue3(&buff);
printf("The third buff data length=%d, data:%s/n",strlen(buff),buff);
return 0;
}