|
How to find a DLL's Memory Usage on run-time ?
thanks in advance
|
|
|
|
|
I believe the information you are after must be tracked through the owning application since the application's stack and heap are shared by the DLL. Unless there were internal counters in place within the EXE, I know of no way to distinguish between memory allocated by the EXE vs. memory allocated by the DLL.
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
Why my program runs more slower when it is built in Unicode mode which is supposed to be more faster?
Lisoft
|
|
|
|
|
lisoft wrote:
Why my program runs more slower when it is built in Unicode mode which is supposed to be more faster?
using unicode should not make your software faster, and should not make your software go slower either.
maybe you are spending (too much) time converting unicode strings to non-unicode strings, or vice-versa.
Maximilien Lincourt
Your Head A Splode - Strong Bad
|
|
|
|
|
This is not necessarily True.
MOST of the Win32 API calls involving strings that are used by an ANSI program have to first pass through interal code to CONVERT those strings to Unicode before calling the native UNICODE functions in the WIN32 API and then back into ANSI upon returning any strings. Microsoft has consistently stated that a UNICODE application with a lot of string processing towards WIN32 API function calls would be faster if it were built to use UNICODE.
So the question makes sense, why is it slower in UNICODE?
I don't really know why.
|
|
|
|
|
hi,
I just want to bring the application to system tray when it was minimized,
thanks,
suri
|
|
|
|
|
|
Thank you
|
|
|
|
|
Hi,
Please give me information about how to link between two projects created in a workspace in VC++.I am using project did in win32 cosole application.Where i can get information about these.
Nowshad.M.C
nowshadmc@rediffmail.com
|
|
|
|
|
I have a Distance Structure that includes Miles, Feet, and Inches. The user inputs these amounts 3 digits for miles, 4 digits for feed and 2 digits for inches. Not all of the time the user will input this number of digits, when the user doesn't input the full number of digits to display the output I need to back fill the numbers with zero's. Like 97 for miles would be display 097. I need some ideas on how to incorporate the back fill zero into a function. Thanks.
Thanks!
|
|
|
|
|
int i = 97;
TCHAR str[4];
_stprintf(str, _T("%03d"), i);
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
"my application is dialog base application"
and i using sample dll.
i execute this application..
following error appear...
i don't know this error type.
Debug Assertion Failed
Program:debug\My.exe
File:dbgheap.c
Line:1011
Expression:_CrtIsValidHeapPointer(pUserData)
Debug Assertion Failed
Program:debug\My.exe
File:dbgheap.c
Line:1076
Expression:_pFirstBlock(pHead)
Application Error
The instruction at "0x10008ba5" refrenced memory at "0xddddddf1":The memory could not be "read".
|
|
|
|
|
Your program is trying to free (or delete) a memory location that hasn't been allocated or has already been freed.
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
my code here--------->
test.h
------
TEST_API void TestCStringArray(CStringArray* _testarray);
test.cpp
--------
TEST_API void TestCStringArray(CStringArray* _testarray)
{
_testarray->Add("test1");
_testarray->Add("test2");
_testarray->Add("test3");
_testarray->Add("test4");
}
============================================================
using dll code here------>
typedef void (*EXTERNAL_TESTCSTRINGARRAY) (CStringArray* _testarray);
EXTERNAL_TESTCSTRINGARRAY dll_testcstringarray;
CStringArray _testarray;
dll_testcstringarray(&_testarray);
for (int i=0;i<_testarray.GetSize();i++)
{
m_ist.AddString(_testarray.GetAt(i));
}
what i missing?
i don't know?
how can i solve this error???
|
|
|
|
|
Are your DLL and exe both using the same heap? If not your exe may be trying to delete a pointer on its heap which was allocated on the DLLs heap.
If you vote me down, my score will only get lower
|
|
|
|
|
can u tell me about heap..(memory allocate)
i'm just small programmer.
so,i can't handle.
how can i keep?
|
|
|
|
|
Basically, memory allocated by a DLL should be freed by that DLL (not by your EXE). And vice-versa.
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
And therein lies the rub. What Roger was pointing out is exactly what's happening. When adding the CStringArray has strings added to it in the DLL, the guts of the CString s inside the CStringArray are allocated by the DLL. But then the CStringArray goes out of scope in the application, the app tries to free it from the heap. Hence, the error
By the way, this particular error can occur when you overflow an allocated block. Ten gallons of crap doesn't fit in a five gallon bucket (feel free to convert to liters ).
Bob Ciora
|
|
|
|
|
can i pass CStringArray from dll.
example...
CStringArray my(void)
{
CStringArray a;
---
a.Add("a");
a.Add("b");
a.Add("c");
a.Add("d");
--
return a;
}
i can not pass CStringArray from dll.
error C2558: class 'CStringArray' : no copy constructor available
i don't know.
how can i control CStringArray in dll?
|
|
|
|
|
vc-programmer- wrote:
can i pass CStringArray from dll.
Yes, by reference, as in:
void my (CStringArray& theArray)
{
theArray.Add ("a");
theArray.Add ("b");
...
return;
}
However, this won't fix the problem, since the contents of theArray will be freed by the client app and not by the DLL as they should. Consider offering another method in your DLL that will clear the CStringArray 's contents. Also consider building a static library instead of a DLL.
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
I want to use method below to manapulate database:but how can I get the specified interface ,for example:_ConnectionPtr.
IDispatch* pDispatch=NULL;
CLSID clsid;
CoInitialize(0);
HRESULT hr = ::CLSIDFromProgID(L"ADODB.Connection", &clsid);
if(FAILED(hr)){return;}
CoCreateInstance(clsid, NULL, CLSCTX_SERVER, IID_IDispatch, (void **)
&pDispatch);
if(FAILED(hr)){return;}
thanks a lot
|
|
|
|
|
Click on 'My Articles' link in my signature and go to my BugReporter article. See described in the article how I use #import to use ADO in my app, or look at the comments posted below my article on how to use LIBID (if you're using VC7).
Better yet, BugReporter[^]
My articles
www.stillwaterexpress.com
BlackDice
|
|
|
|
|
thanks for your help,but I want to use this method without importing ado.dll:
CString m_strConnect.Format("Provider=OraOLEDB.Oracle.1;Password=user_password;Persist Security Info=True;User ID=user_id;Data Source=user_DATASource;");
_RecordsetPtr m_prs;
_ConnectionPtr m_pConnection;
HRESULT hr = S_OK;
try
{
hr = m_prs.CreateInstance(__uuidof(Recordset));
if(FAILED(hr))
{
AfxMessageBox("记录集对象建立失败!",MB_ICONINFORMATION);
return ;
}
BeginWaitCursor();
m_strSQL = "select * from tableA";
hr = m_prs->Open(_bstr_t(m_strSQL),(IDispatch*)m_pConnection,adOpenStatic ,adLockReadOnly,adCmdText);
if(FAILED(hr))
{
AfxMessageBox("数据库查询失败!",MB_ICONINFORMATION);
return ;
}
EndWaitCursor();
}
catch(_com_error e)
{
CString errormessage;
errormessage.Format("错误信息:%s",(char*)(e.Description()));
AfxMessageBox(errormessage, MB_ICONINFORMATION);
return;
}
catch (CException err)
{
err.ReportError();
return;
}
catch(...)
{
AfxMessageBox("未知错误!",MB_ICONINFORMATION);
return;
}
compiles show errors:_ConnectionPtr not definition
|
|
|
|
|
i use spin control to spin a opengl dialog box based aplication (rectangle object), i put info about spin control value to a static text, i set range from -90 to 90, it's run normal wen run from 90 - 0(left to right(clock arrow)), but when value -1 (on static text info) the rectangle object JUMP BACK from 0 position back to aprox ~ +20 (JUMP BACK right to left(back of clock arrow)) then at -2, -3, -4 ... etc run continue from -1 position from left to right(clock arrow again),
somebody help me please , or can you help me code to run spin control to move/spin object on a opengl dialog box aplication.
|
|
|
|
|
i use spin control to spin a opengl dialog box based aplication (rectangle object), it put info about spin control value to a static text, i set range from -90 to 90, it's run normal wen run from 90 - 0(left to right(clock arrow)), but when value -1 (on static text info) the rectangle object JUMP BACK from 0 position back to aprox ~ +20 (JUMP BACK right to left(back of clock arrow)) then at -2, -3, -4 ... etc run continue from -1 position from left to right(clock arrow again),
somebody help me please , or can you help me code to run spin control to move/spin object on a opengl dialog box aplication. ???
|
|
|
|