重讀一些基礎


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);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM