• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Maksymalna wartość msg.get

Status
Not open for further replies.

nemezis

# Lazybones #
Joined
Jan 1, 2011
Messages
152
Reaction score
5
Location
Hole in Poland
Witam!
Czy ktoś może wie jaka będzie maksymalna wartość w przypadku
size_t wartosc = msg.get<char>();
?
Pozdrawiam!
 
Bardziej mi zależy wiedzieć jaki maksymalny int() można tam wcisnąć. 1 bajt to 256 czyli 2^8 to będzie limit?
 
Dla inta:
http://www.cplusplus.com/doc/tutorial/variables/ said:
signed: -2147483648 to 2147483647
unsigned: 0 to 4294967295

@Xadrian:
Gz, takim tokiem rozumowania doprowadzisz tylko do debugow clienta.
 
W tfs funkcja parseAutoWalk ma pentle która trwa zależnie właśnie od tego get i nie wiem czy przed to crasha się nie da zrobić czasem

Code:
void ProtocolGame::parseAutoWalk(NetworkMessage& msg)
{
	// first we get all directions...
	std::list<Direction> path;
//	size_t dirCount = 1000000000;
	size_t dirCount = msg.get<char>();
//	std::clog << dirCount << std::endl;
	for(size_t i = 0; i < dirCount; ++i)
	{
		uint8_t rawDir = msg.get<char>();
		Direction dir = SOUTH;
		switch(rawDir)
		{
			case 1:
				dir = EAST;
				break;
			case 2:
				dir = NORTHEAST;
				break;
			case 3:
				dir = NORTH;
				break;
			case 4:
				dir = NORTHWEST;
				break;
			case 5:
				dir = WEST;
				break;
			case 6:
				dir = SOUTHWEST;
				break;
			case 7:
				dir = SOUTH;
				break;
			case 8:
				dir = SOUTHEAST;
				break;
			default:
				continue;
		}

		path.push_back(dir);
	}

	addGameTask(&Game::playerAutoWalk, player->getID(), path);
}

Niepokoi mnie to:
Code:
size_t dirCount = msg.get<char>();
	for(size_t i = 0; i < dirCount; ++i)

Bo przy moich testach przy dirCount ok. 100kk serwer ma ogromy skok pamięci ram aż padnie z braku ramo i chciałbym wiedzieć jaka jest tego maksymalna wartość.
 
Po prostu zrob cos w stylu:
Code:
if( dirCount > 100 ) dirCount = 100;

Wtedy ten warunek zlimituje zmienna do 100.
 
Status
Not open for further replies.
Back
Top