2017年11月29日 22:25:34
1. 全局靜態變量只能作用在 該定義的文件,全局變量可以作用與全部文件,局部靜態變量只能作用於局部
例如在頭文件里定義了static 全局變量,不同的源文件引用,則在不同的文件里邊地址是不同的。如果不是static,則會提示重定義
可以在一個源文件里定義,然后用extern聲明
2.靜態成員變量和函數 不占用sizeof,但是虛函數,不管多少個,都會在類的起始地址占據4個字節
3.對於map的刪除
std::map<int, struct tFileInfo>::iterator itr = m_mapFiles.begin();
for (; itr != m_mapFiles.end(); )
{
++itr->second.iCheckCount;
bool bIter = false;
if (itr->second.iCheckCount > 3)
{
pthread_rwlock_unlock(&rwlock);
pthread_rwlock_wrlock(&rwlock);
itr->second.reset();
close(itr->first);
printf("close the sock %d\n", itr->first);
m_mapFiles.erase(itr++); //erase能使itr失效,++之后,指向下一個
bIter = true;
pthread_rwlock_unlock(&rwlock);
pthread_rwlock_rdlock(&rwlock);
}
if (!bIter) //沒有達到刪除條件的 跌帶起不會失效,繼續++
{
itr++;
}
}
pthread_rwlock_unlock(&rwlock);