Re: утечки памяти при использовании sprintf
От: baf  
Дата: 31.05.11 11:58
Оценка:
Здравствуйте, Rat, Вы писали:

Rat>вот типичный пример использования:


Rat>
Rat>void func ( unsigned char * some_ptr )
Rat>{
Rat>char buf [40];
Rat>std::string str;

Rat>str = "some words ";
Rat>sprintf ( buf, "%i", *(some_ptr) );
Rat>str += buf;
Rat>}
Rat>


Может быть отладчику не нравиться, то что unsigned char используется как int, sprintf не проверяет соответсвия типов списка аргументов, потому что их может быть сколь угодно много и их обработка идёт с помощью макроса. Таким образом *(some_ptr) интерпретируется как int и захватывает лишние байты. Попробуйте так:
sprintf ( buf, "%i", int(*(some_ptr)) );
или используете std::stringstream
или boost::format
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.