Home > Back-end >  Create a DLL in BCB memory leak???
Create a DLL in BCB memory leak???

Time:09-24

I'm doing a DLL, recently discovered may be a memory leak, but I couldn't find the reason, please help to analysis, RAD studio 2010 Windows 7 64 - bit,
Create a Dll, it is a Form, put a timer, then the timer event code below
Void __fastcall TForm1: : Timer1Timer (TObject * Sender)
{
Timer1 - & gt; Enabled=0;
Timer1 - & gt; The Interval=1000;
Timer1 - & gt; Enabled=1;
}
Below is the entrance to the part of the

TForm1 * Form1;
# pragma argsused
BOOL WINAPI DllMain (HINSTANCE hinstDLL, dwords fwdreason LPVOID lpvReserved)
{
return 1;
}
//-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Extern "C" __declspec (dllexport) void __stdcall Start (void)
{
Form1=new TForm1 (NULL);
}
Extern "C" __declspec (dllexport) void __stdcall Stop (void)
{
The delete Form1;
}
Compile,
Then create a BCB engineering, the use of DLL, is also a Form, put two buttons,
TForm1 * Form1;

AnsiString STR=ExtractFilePath (Application - & gt; ExeName) + "Project1. DLL";
HINSTANCE HDLL;
Start HRESULT __stdcall (*) (void);
Stop HRESULT __stdcall (*) (void);

//-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
__fastcall TForm1: : TForm1 (TComponent * Owner) : TForm (the Owner)
{
}

//-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Void __fastcall TForm1: : BitBtn1Click (TObject * Sender)
{
Start ().
}

//-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Void __fastcall TForm1: : FormCreate (TObject * Sender)
{
HDLL=: : LoadLibrary (STR) c_str ());//dynamic loading
(FARPROC&) Start=GetProcAddress call (HDLL, "Start");
(FARPROC&) Stop=GetProcAddress call (HDLL, "Stop");
}

//-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Void __fastcall TForm1: : BitBtn2Click (TObject * Sender)
{
Stop ();
}
Runtime, click on the button 1, see the process in the resource manager, memory, is on the rise,
DLL code to the following, is normal, the memory increases,
Void __fastcall TForm1: : Timer1Timer (TObject * Sender)
{
//Timer1 - & gt; Enabled=0;
Timer1 - & gt; The Interval=1000;
//Timer1 - & gt; Enabled=1;
}

Excuse me what reason?

CodePudding user response:

Sorry to write wrong
"DLL code to the following, is normal, without increasing the memory"

CodePudding user response:

Ask yourself the answer?
  • Related