Re: EnterCriticalSection() is corrupting my heap
 
Hi,
Yes i use HeapCreate() and HeapAlloc().
I have a class object which is created on the heap and I have a member 
variable in this class of type CRITICALSECTION (say m_cs). Inside one of my 
class function when I call EnterCriticalSection(&m_cs) then this problem 
occurs. Ok may be its not because of critical section because at the place 
in code where EnterCriticalSection() was being called I create and 
CAutoLock() object and pass my pointer to CRITICALSECTION object to it 
(CAutoLock just call EnterCriticalSection in its constructor and 
LeaveCriticalSection in its destructor). In the constructor when I try to 
save pointer of critical section to the class member (CRITICALSECTION 
*m_pCS) of CAutoLock then although it is pointer assignment but after 
assignement the class member has some garbage data.
In my outside code:
{
    CAutoLock(&m_cs);
    // Some code
}
CAutoLock::CAutoLock(CRITICALSECTION *pCS)
{
    m_pCS = pCS;   <= This assignement is not working correctly and after 
assignment m_pCS points to some garbage memory location
    EnterCriticalSection(m_pCS);
}
So any idea what is wrong?
Thanks,
Arsalan
Any idea whats wrong?
"Oleg Starodumov" <com-dot-debuginfo-at-oleg> wrote in message 
news:esmFGFzfGHA.4792@TK2MSFTNGP03.phx.gbl...
I have developed a static library which I am using in one of my 
application.
In my library I have created my own heap and all the objects (class 
objects)
in my application are created in that heap. What I have observed is that 
in
my library at a certain place when I call EnterCriticalSection() to an
object allocated at my heap, it is corrupting my heap. I am using Windows 
XP
and visual studio 8.0. Any hint how can I solve this problem?
How exactly do you create and use the heap?
Do you use HeapCreate/HeapAlloc/etc., or some other approach?
How do you detect the heap corruption?
How do you allocate memory for the CRITICAL_SECTION structure?
How do you pass this CRITICAL_SECTION to EnterCriticalSection?
Code samples would be helpful.
Regards,
Oleg
[VC++ MVP http://www.debuginfo.com/]