утечка памяти,неправильно находит проценты

Картежник
Дата: 28.03.2015 22:35:07
где то утечка произошла,не могу найти.
httpnet.loaded - это текущее кол-во
httpnet.allb - это всего должно быть

в первый раз до 17 процентов считает правильно, затем становится -17 и опять постепенно возрастает до 17 и опять с -17 начинает и т.д..
это кусочек от отрисовки процентов,
...

string inttostr(const long int n) {
	std::stringstream str;
	str << n;
	string ret;
	ret.clear();
	str >> ret;
	return ret;
};
...

                long int pp1=100*httpnet.loaded;//отдельно httpnet.loaded отображается правильно.  
		pp1=pp1/httpnet.allb; //  httpnet.allb отдельно отображается правильно 
		string s4;
		s4="";//уже и так сделал
		s4=inttostr(pp1);
		if(pp1>=0){ //для отладки, отлавливаю когда pp1<0
		TextOut(hdc,wndwd/2+60,wndhg/2+80,s4.c_str(),s4.length());
		}
		else{
		TextOut(hdc,wndwd/2+60,wndhg/2+80,s4.c_str(),s4.length());
		}


на картинке видно какие значения на определенный пойманный момент для httpnet.loaded и httpnet.allb,
но при этом процент от них показывает -16(минус 16)
думаю что то в inttostr()
Dimitry Sibiryakov
Дата: 28.03.2015 23:03:57

Вопрос на засыпку: какова разрядность long int и его предельное значение?

Posted via ActualForum NNTP Server 1.5

Картежник
Дата: 28.03.2015 23:14:38
Dimitry Sibiryakov,

разрядность 4
от -2 147 483 648 до 2 147 483 647
Dimitry Sibiryakov
Дата: 28.03.2015 23:26:49

Умничка. А теперь возьми калькулятор или бумажку и умножь свой loaded на 100.

Posted via ActualForum NNTP Server 1.5

Картежник
Дата: 28.03.2015 23:42:41
Dimitry Sibiryakov,

да понял№почему то думалчто long побольше будет
Картежник
Дата: 29.03.2015 09:25:37
заменил на unsigned _int64 , но теперь вопрос. если система будет 32-х битной, а числа те же. результат будет таким же как и в 64битной? или другим?
MasterZiv
Дата: 29.03.2015 10:21:13
Картежник,

об этом спросив документации на свой компилятор