GROUP_STR *pTemp = new GROUP_STR [groupno + 1];
memset(pTemp, 0, sizeof(GROUP_STR) * (groupno+1));
if(pGroup)
{
memcpy(pTemp, pGroup, sizeof(GROUP_STR) * groupno);
delete []pGroup;
}说明:GROUP_STR 是一个结构体,定义如下:
struct GROUP_STR {
char groupname[MAX_USERNAME];
GROUPUSER *nameid;
int nameno;
int groupexist;
};
问题:在上面的代码中,new分配内存的时候是怎么分配的?他的nameid成员给分内存了吗?那后面的memcpy函数,sizeof(GROUP_STR)是怎么算的?delete函数可以直接这么删除结构吗?难道不需要线删除它的成员nameid所分配的空间?
memset(pTemp, 0, sizeof(GROUP_STR) * (groupno+1));
if(pGroup)
{
memcpy(pTemp, pGroup, sizeof(GROUP_STR) * groupno);
delete []pGroup;
}说明:GROUP_STR 是一个结构体,定义如下:
struct GROUP_STR {
char groupname[MAX_USERNAME];
GROUPUSER *nameid;
int nameno;
int groupexist;
};
问题:在上面的代码中,new分配内存的时候是怎么分配的?他的nameid成员给分内存了吗?那后面的memcpy函数,sizeof(GROUP_STR)是怎么算的?delete函数可以直接这么删除结构吗?难道不需要线删除它的成员nameid所分配的空间?
GROUP_STR *pTemp = new GROUP_STR [groupno + 1];
你的GROUP_STR 中的nameid其实只放了一个指针,他没有指向任何东西
nameid要赋值只能再单独的使用new,delete来分配与释放内存---------
++C++
---------
您好,new之后,是放了一个空指针,那么之后的memcpy是怎么回事呢,pGroup里的nameid肯定不是空指针,有实际内存,这个memcpy是怎么操作的,后面的sizeof怎么算来的?