_strset_s падает - PullRequest
       18

_strset_s падает

0 голосов
/ 20 мая 2011

Следующий код вылетает при выполнении _strset_s Я указал длину 80 в _ strset_s. В чем может быть проблема?. Я включил опцию проверки кадров стека времени выполнения /RTCs

char strToken[80];
_strset_s(strToken, 80, '\0' );

Ответы [ 2 ]

4 голосов
/ 20 мая 2011

Вы можете позволить компилятору выполнить заполнение, используя

char strToken[80] = {0}; 

Это обнулит все байты строки.

2 голосов
/ 20 мая 2011

Вход в _strset_s должен быть нулевым, в соответствии с MSDN .Поскольку ваша строка ни к чему не инициализирована, она нарушает этот инвариант.

Если str - нулевой указатель, или аргумент размера меньше или равен 0, или блок, переданный вне завершается нулем, тогда вызывается недопустимый обработчик параметров ,

По умолчанию «недопустимый обработчик параметров» - сбой, снова из MSDN :

Недопустимый параметр по умолчанию вызывает отчет о сбоях Watson, который вызывает сбой приложения и запрашивает у пользователя, хотят ли они загрузить дамп сбоя в Microsoft для анализа.

Итак, я 'я бы сначала попробовал завершить strToken с помощью Null (или еще лучше сделать то, что Бо Перссон предлагает в своем ответе)

char strToken[80];
strToken[79] = '\0';
_strset_s(strToken, 80, '\0' );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...