linux:跑程序时内存一直增加
linux小弟写了个程序,当做脚本时内存一直在增加,请教各位大侠具体是什么原因:
在线等
#include <stdio.h>
#include <stdlib.h>
#include <mysql.h>
#include <deque>
#include <string>
#include <curl/curl.h>
#include <iostream>
#include <unistd.h>
//#include "/usr/include/mysql/mysql.h"
using namespace std;
//全局变量
int onlineNu;
int firstonlineNu;
int secondonlineNu;
int thirdonlineNu;
int online;
int sendInfo(int &onlineNumber)
{
MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;
int num1;
int logtime;
int appid;
char sql[200] = {0};
mysql_init(&mysql);
if(!mysql_real_connect(&mysql,"localhost","datacenter","q9UGszLPpjuREN4B","dc",0,NULL,0))
{
printf("store user_allow_chgpass error: %s",mysql_error(&mysql));
printf("connection false!\n");
return 0;
}
snprintf(sql, sizeof(sql), "select logtime,appid from online_and_play where online = '%d' order by logtime desc limit 0,1", onlineNumber);
if(mysql_query(&mysql,sql))
printf("query is ok!\n");
res=mysql_store_result(&mysql);
num1 = mysql_num_rows(res) ;
int i,t;
char pp[200];
for(i=0;i<num1;i++)
{
row=mysql_fetch_row(res);
logtime = atoi(row[0]);
appid = atoi(row[1]);
}
snprintf(pp, sizeof(pp), "appid=%d&logtime=%d&online=%d&firstonlineNu=%d&secondonlineNu=%d&thirdonlineNu=%d",appid,logtime,online,firstonlineNu,secondonlineNu,thirdonlineNu);
mysql_free_result(res);
mysql_close(&mysql);
CURLcode cres;
CURL *curl;
char curlURL[100] = "http://data.boyaa.com/online_test/onlinemail.php";
curl = curl_easy_init();
if(curl)
{
curl_easy_setopt(curl, CURLOPT_URL,curlURL);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS,pp);
cres = curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
}
int main()
{
MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;
deque <int>::iterator Iter;
deque<int> dec;
double avg;
int sum;
double result;
double result1;
int i,t;
int num;
char str[200];
int arr[18] = {23,24,26,27,29,30,31,32,35,36,39,40,45,58,59,76,98,103};
mysql_init(&mysql);
if(!mysql_real_connect(&mysql,"localhost","datacenter","q9UGszLPpjuREN4B","dc",0,NULL,0))
{
printf("store user_allow_chgpass error: %s",mysql_error(&mysql));
printf("connection false!\n");
return 0;
}
while(1)
{
for(int i=0;i < 18 ;i++)
{
sum = 0;
avg = 0;
int id = arr[i];
snprintf(str,sizeof(str),"SELECT * FROM (SELECT * FROM online_and_play WHERE `appid` = %d ORDER BY logtime DESC LIMIT 0 , 4) a ORDER BY a.logtime DESC",id);
if(0 != mysql_query(&mysql,str))
printf("%s\n", mysql_error(&mysql));
res = mysql_store_result(&mysql);
num = mysql_num_rows(res) ;
if(num < 4)
continue;
for(i=0;i<num;i++)
{
row = mysql_fetch_row(res);
online = atoi(row[2]);
dec.push_back(online);
}
for(Iter = dec.begin(); Iter <= dec.end()-2;Iter++ ){
sum += *Iter;
}
avg = double(sum) / 3;
result = avg - dec.at(dec.size()-1);
result = result<0 ? (-result):result;
result1 = result / avg;
if(0.25 < result1)
{
onlineNu = dec.at(dec.size()-1);
firstonlineNu = dec.at(dec.size()-2);
secondonlineNu = dec.at(dec.size()-3);
thirdonlineNu = dec.at(dec.size()-4);
sendInfo(onlineNu);
}
dec.clear();
mysql_free_result(res);
}
sleep(10);
}
mysql_close(&mysql);
}