|
34 / 10 / 2
Регистрация: 20.02.2016
Сообщений: 1,613
|
|
Разница между strcpy_s и strcpy?08.10.2016, 20:24. Показов 10144. Ответов 19
Метки нет (Все метки)
Добрый день!
Писал программу с использованием оператора strcpy. Компилятор выдал такое вот предупреждение: error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. Чем отличается strcpy_s от strcpy?
0
|
|
| 08.10.2016, 20:24 | |
|
Ответы с готовыми решениями:
19
strcpy/strcpy_s
Чем отличаются функции strcpy и strcpy_s |
|
Ушел с форума
|
||
| 09.10.2016, 10:28 | ||
|
некоторым функциям стандартной библиотеки. "Безопасный" в данном контексте - это: * более строгая проверка аргументов; * контроль выхода за пределы буфера (как правило, за счет дополнительного параметра); * обеспечение завершающего нуля в некоторых случаях (там, где стандартные функции такой гарантии не обеспечивают); * строго определенная реакция на ошибку (как правило, приводит к срабатыванию invalid_parameter_handler; поведение стандартных функций в аналогичных ситуациях, как правило, не определено - UB); * и т.д. Более подробнее - здесь: Security Features in the CRT https://msdn.microsoft.com/en-... 0s5kh.aspx
0
|
||
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
| 09.10.2016, 11:35 | |
|
Fatmarmelad, добавлю, что ходят слухи, что MS не имели право по умолчанию не компилировать функции определённые в стандартной библиотеки
0
|
|
|
Ушел с форума
|
||
| 09.10.2016, 11:50 | ||
|
патентные требования или условия соглашения на много миллионов долларов... Этак можно любой статический анализатор кода загнобить, что он не дает проект нормально скомпилировать. Почему-то по поводу Secure CRT, SDL, SAL и т.п. часто упреки в сторону MS слышу, как будто они кого-то насильно заставляют этими возможностями пользоватся.
0
|
||
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
||
| 09.10.2016, 12:01 | ||
|
0
|
||
|
Ушел с форума
|
|
| 09.10.2016, 12:07 | |
|
Разве не логичнее, чтобы все новые фичи были по умолчанию включены?
Я бы, например, не хотел каждый раз при создании проекта явно включать поддержку C++11/14.
0
|
|
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
| 09.10.2016, 12:09 | |
|
Убежденный, а разве удобно открывая чужой проект/код у себя в VS приходится фиксить ошибки компиляции
*_s
0
|
|
|
Ушел с форума
|
|
| 09.10.2016, 12:29 | |
|
rikimaru2013, на счет этого согласен. При апгрейде проектов с предыдущих
версий Visual C++ стоило бы все новые опции оставлять выключенными, это разумно. Но выдавать какой-нибудь варнинг во время апгрейда, что, мол, теперь доступна такая-то опция, почитать можно здесь и т.п.
0
|
|
|
|
|
| 09.10.2016, 12:39 | |
|
На всякий случай. strcpy_s и прочие аналоги являются микрософтовским расширением. Коды с их использованием будут непереносимыми.
GNU'шники пошли немного по другому пути. Они наваяли целую пачку специальных builtin'ов, а в системных хидерах стандартные интерфейсы определяют через эти builtin'ы. Таким образом и контроль появляется, и пользовательский исходник остаётся переносимым https://gcc.gnu.org/onlinedocs... e-Checking
2
|
|
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
| 09.10.2016, 13:40 | |
|
Убежденный, я к этому и клонил если перечитать мои посты)
0
|
|
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
||
| 09.10.2016, 13:46 | ||
strcpy_s и некоторые другие похожие функции включены в стандарт С11.Вот ссылка на TR 24731-1, который теперь часть стандарта С11.
2
|
||
|
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
|
||
| 09.10.2016, 13:46 | ||
|
strcpy (в отличие, напримет от gets, которую убрали в c11) соответсвует всем стандартам C и С++. Вывод ошибки при ее использовании говорит только об одном - отношении MS к стандартам.
1
|
||
|
Ушел с форума
|
|||
| 09.10.2016, 16:37 | |||
|
потому что ломает совместимость со старым кодом C++98/03. Давайте опять катить бочки на MS, что они снова положили болт на совместимость и всех кинули.
начинающих программистов использовать древние окаменелости strcpy, strcat, sprintf и т.п., где очень легко нарваться на выход за пределы буфера или получить неопределенное поведение программы. В этом случае есть хоть какая-то вероятность, что программист обратит на это внимание и хотя бы поинтересуется на MSDN, почему это вдруг функции стали небезопасными и код перестал компилироваться, и уже потом сделает для себя выводы и выберет какой-то свой подход, а не будет сразу тупо задавливать варнинг каким-нибудь _CRT_SECURE_NO_WARNINGS. Некоторый код лучше и правда никогда не компилировать и не выпускать в продакшн. Я бы вообще для новых проектов включал все доступные опции безопасности на максимум, вместе с /Wall (treat warnings as errors), статическим анализом кода и всем остальным. Все равно люди опытные в несколько кликов смогут перенастроить все под себя, а начинающим будет полезно сразу включать все возможные проверки кода, хотя бы в течение определенного времени.
0
|
|||
|
Неэпический
|
|||
| 09.10.2016, 16:46 | |||
|
т.к. под рукой нет C11, а качать с моим текущим интернетом - тоже не вариант.
0
|
|||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|
| 09.10.2016, 19:16 | |
|
Croessmah, Однако даже так противоречий со сказанным мной нет. Я сказал, что функции включены в стандарт - ну так они включены, какие вопросы. Я сделал оговорку, что теперь эти функции нельзя считать исключительно Microsoft-specific даже с учетом того, что их может не быть в какой-то конкретной реализации.
0
|
|
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|
| 09.10.2016, 20:10 | |
|
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 09.10.2016, 20:24 | ||
|
вы обновляете проект. вы модернизируете проект так, что бы он соответствовал веяниям нового времени. зачем вы вообще это делаете, если хотите, что б все оставалось по старому?
0
|
||
|
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
|
||
| 09.10.2016, 22:47 | ||
|
Если подобным образом "приучать" новичков к "правильному" стилю, так лучше сразу рекомендовать писать код на Яве или на Решётке. Использование указателей само по себе потенциально несет больше угроз для безопасности, чем какая-то strcpy. Причиной для МС отучать от подобных функций мне видится только желание "подсадить" на свои аналоги. Добавлено через 12 минут PS. И, все же, да. И стандартизаторы, и разрабы компиляторов обратную совместимость ставят одной из основных целей и отходят от этого принципа разве что в исключительных случаях, напр. как с gets, которая явно открывает путь "дырам".
0
|
||
| 09.10.2016, 22:47 | |
|
Помогаю со студенческими работами здесь
20
Какая разница между различными сокетами (например, между 775 и 1155)? Разница между 0 и 00 ? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|