重读一些基础
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);