- 论坛徽章:
- 0
|
写了一段应用程序,发现有内存泄漏。把程序分开测试,发现问题出在线程资源这一块,请各位大虾帮忙指点一二,最好能编译测试一下,我已经测试一个多星期了,就是没有找出原因,初学者,请多关照:)
/**************pthreadtest2.cpp ****************/
#include <stdio.h>
#include <iostream>
#include <vector>
#include <semaphore.h>
#include <pthread.h>
#include <sys/time.h>
#include <unistd.h>
using namespace std;
void* sendMsgs(void *arg)
{
pthread_exit(NULL);
}
int main(void)
{
sleep(30); //此处用pmap 查看到mapped内存2280k
unsigned int i = 0;
//循环体内执行过程中通过pmap 查看到mapped内存14572k
while( i < 65000)
{
i ++;
int flag = 0;
pthread_attr_t pthread_attr;
pthread_attr_init(&pthread_attr);
pthread_attr_setdetachstate(&pthread_attr,PTHREAD_CREATE_JOINABLE); pthread_t threadSend;
if( (flag = pthread_create(&threadSend,&pthread_attr,&sendMsgs,NULL) != 0 ) )
{
cout << "create Error(threadSend):" << flag << endl;
break;
}
pthread_join(threadSend,NULL);
pthread_attr_destroy(&pthread_attr);
}
cout << "waiting ..." << endl;
sleep(30); //此处 mapped内存14572k
return -1;
}
如果这个sendMsg内加入 string aa = "dfaaaaaadsfsd..."等等,那么内存吃得更多。
而且发现,吃掉内存的多少跟循环次数有关系,但不是线性关系;比如说循环1次和1000次他们吃掉的内存同样是6M左右,但是增加到某个数,一下就到了8M.
请各位帮忙测试测试,为什么会是这样的结果。
} |
|