Нет ли в этом коде утечек памяти? Нужны ли здесь какие-то дополнительные проверки?
class TMyData : public TObject
{
public:
int Value;
int CoutSens;
String Login;
bool Aut;
bool ProverkaSetup;
int PeriodTime;
String Otvet;
BYTE * RamdomData;
__fastcall TMyData(int aValue, int aCoutSens, String sLogin, bool sAut, bool sProverkaSetup,
int aPeriodTime, String aOtvet, BYTE *aRamdomData)
: TObject(), Value(aValue), CoutSens(aCoutSens), Login(sLogin), Aut(sAut), ProverkaSetup(sProverkaSetup),
PeriodTime(aPeriodTime), Otvet(aOtvet)
{
RamdomData = new BYTE[16];
memcpy((void*)RamdomData,(void*)aRamdomData,16);
}
__fastcall ~TMyData()
{
if(RamdomData)
delete [] RamdomData;//диструктор правильный?
}
};
void __fastcall TForm1Main::IdTCPServer1Connect(TIdContext *AContext)
{
//***
Randomize();
BYTE Data[16];
for(int i = 0; i 16; i++)
{
BYTE rnd = Random(256);
Data[i] = rnd;
//***
AContext->Data = new TMyData(0, 0,"", false, false, 0, "", Data);
//В другом месте программы используем
String s;
BYTE Data[16];
memcpy((void*)Data,(void*)static_castTMyData*>(AContext->Data)->RamdomData,16);
for(int i = 0; i 16; i++)
{
BYTE rnd = Data[i];
s += IntToHex(rnd&0xFF,2);
}
//в IdTCPServer1Disconnect
if(AContext->Data)
{
delete AContext->Data;
AContext->Data = NULL;
}