what exactly i want is, to read the elemnts from the headposition in Clist and immediately after reading,would like to delete the already read element from the list & also release the memory that was associated with the deleted element. Can anybody pls. elaborate on this The code is as follows void CPLayerApp::LockIt() { unsigned char data[10],mCnt,mMid; unsigned char *ptr; CMessage* pMess; CMessage* delMess; CSingleLock singleLock(&m_SyncLock.m_mutex); CString str=""; while(1) { if(m_messList.GetCount() != 0) { singleLock.Lock(); pMess = &m_messList.GetAt(m_messList.GetHeadPosition()); mCnt = pMess->m_cnt; mMid = pMess->m_mid; pMess->GetData(data); //POSITION pos = m_messList.GetHeadPosition(); m_messList.RemoveHead(); delMess= &m_messList.RemoveHead(); //pMess=(CMessage*)m_messList.RemoveHead(); delete delMess; singleLock.Unlock(); if(data[0] == 0x10) { str.Format("%0x",data[0]); AfxMessageBox(str); break; } } Sleep(200); }:( Rsh