我正在尝试修复其他人编写的旧项目中的错误。下面是我现在正在使用的代码的一部分。
关于联合中指针的使用,有些事情我不清楚。联合中的指针指向的内存如何释放?我应该为指针分配内存吗?另外我认为它们是代码的其他问题,请指出。非常感谢!
代码:
class A
{
long filePos;
union EU
{
float *recording;
UINT64 timeStamp;
EU(): timeStamp((UINT64)0) //should I allocate memory here?
{
}
EU(const EU& eu)
{
if(eu.timeStamp) //is this the way to check which field of union is used currently?
timeStamp = eu.timeStamp;
else
recording = eu.recording;
}
EU& operator=(const EU& eu)
{
if(this == &eu)
return *this;
if(eu.timeStamp)
timeStamp = eu.timeStamp;
else
recording = eu.recording;
return *this;
}
EU(UINT64 ts):timeStamp(ts)
{
}
~EU()
{
}
}EU;
public :
inline A(long fpos, UINT64 ts) :filePos(fpos),EU(ts)
{
}
inline A(const EDFItem & ei)
{
filePos = ei.filePos;
EU=ei.EU;
}
~A ()
{
}
inline A& operator=(const A& ei)
{
if(this == &ei)
return *this;
filePos = ei.filePos;
EU=ei.EU;
return *this;
}
}