У меня есть код, в котором оптимизирующий компилятор всегда дает сбой при каждом запуске.
char* GetWinSockVersion()
{
char *tmpData = (char*)malloc(sizeof(wsaData.wVersion));
_itoa_s<wsaData.wVersion>(wsaData.wVersion, tmpData, 10);
return tmpData;
}
Это не сработает с _itoa_s
. Мне интересно, почему он все время выходит из строя?
1 ответ
Вы неправильно используете функцию.
_itoa_s
требуется 4 аргументы.
Эта функция предназначена для использования с c
, для c++
у вас есть поток.
Ваш код должен быть больше похож (при условии, что wsaData.wVersion - это число)
char *tmpData = (char*)malloc(sizeof( char ) * 80 );
_itoa_s(wsaData.wVersion , tmpData , 80 , 10);
//_itoa_s(number to convert , target string, size of target string, number base);
Похожие вопросы
Новые вопросы
c++
C ++ - это язык программирования общего назначения. Первоначально он был разработан как расширение C и имеет аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде (который должен быть) скомпилирован с помощью компилятора C ++. Используйте тег для конкретной версии для вопросов, связанных с конкретной версией стандарта [C ++ 11], [C ++ 14], [C ++ 17], [C ++ 20] или [C ++ 23] и т. Д. .
_itoa_s
является целым числом, тогда вы выделяете толькоsizeof int
байта (обычно 4), но вы сообщаете_itoa_s
, что их 10.