|
发表于 2005-7-14 09:23:16
|
显示全部楼层
看了以上的对话真是受益匪浅,我也对 malloc 和 free 不是太清楚怎么使用,这下清楚多了,谢谢 玛宁、macarthor、dongni386 。
既然所到malloc 和 free ,我就像问一问 new 和 delete 的用法。
void Play::GetPoker(char *client_name,DBlist & dblist)
{
Poker * poker;
char *p_name =NULL;
//poker初始化
do{
poker=new Poker("AA");
}while(poker ==NULL);
//为p_name申请空间
do{
p_name=(char *)malloc(sizeof(poker->GetPoker())); //poker->GetPoker() 传进来一个名字
}while(p_name == NULL);
strcpy(p_name,poker->GetPoker()); //得到新牌
.
.
.
free(p_name);
char *p_name =NULL;
}
1. 请看一下,我的malloc 和 free 用的对不对 ?
2. poker=new Poker("AA"); 这里的poker 什么时候该 delete 掉,怎样 delete 掉?
3. p_name=(char *)malloc(sizeof(poker->GetPoker())); 这么用是不是不太好,可程序没有出错, 是不是要给成这样?
p_name=(char *)malloc(strlen(poker->GetPoker())+1); |
|