|
2 / 2 / 0
Регистрация: 31.07.2017
Сообщений: 54
|
||||||
Безопасное приведение типа - const_cast12.01.2018, 13:37. Показов 1601. Ответов 19
Метки нет (Все метки)
Проблемы с функцией strcpy_s. Ошибки:
1)функция не принимает 2 аргументов 2)отсутствуют экземпляры перегруженная функция "strcpy_s", соответствующие списку аргументов
0
|
||||||
| 12.01.2018, 13:37 | |
|
Ответы с готовыми решениями:
19
приведение типа |
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|||||||
| 12.01.2018, 14:56 | |||||||
Добавлено через 2 минуты И Initial string"Добавлено через 16 секунд http://en.cppreference.com/w/c/string/byte/strcpy
0
|
|||||||
|
2 / 2 / 0
Регистрация: 31.07.2017
Сообщений: 54
|
|||||||||||
| 12.01.2018, 16:44 [ТС] | |||||||||||
|
TRam_, поправлю вас, правильно будет
0
|
|||||||||||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||||||
| 12.01.2018, 17:24 | ||||||
|
Потому что
1) char* source = "Initial string"; создаёт на самом деле указатель на строку в неизменяемой памяти, и такая запись на самом деле возможна только для совместимости, правильно было бы написать const char* source = "Initial string"; и соответственно не получить никакой возможности редактировать свою строку.Подробнее - https://www.cyberforum.ru/blogs/18334/blog97.html 2) внимательно нужно смотреть определение strcpy_s, и соответственно вызывать
0
|
||||||
|
2 / 2 / 0
Регистрация: 31.07.2017
Сообщений: 54
|
||||||
| 12.01.2018, 17:41 [ТС] | ||||||
|
Но даже после этих корректировок:
Вызвано исключение по адресу 0x00AECE4F (ucrtbased.dll) в Project5.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x00DC9B40.
0
|
||||||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||
| 12.01.2018, 17:52 | ||
|
Добавлено через 1 минуту Собственно и получил вылет из-за попытки изменить неизменяемую память. Добавлено через 4 минуты А чтобы изменять, нужен либо статический, либо динамический массив. Либо его обёртка в виде std::vector или std::string
0
|
||
|
2 / 2 / 0
Регистрация: 31.07.2017
Сообщений: 54
|
||||||
| 12.01.2018, 17:56 [ТС] | ||||||
|
Однако исключение все равно остается даже если сделать так:
0
|
||||||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|||||||||||
| 12.01.2018, 18:17 | |||||||||||
Сообщение было отмечено Tasen как решение
Решение
А вот код
Добавлено через 1 минуту И вот такой - тоже
1
|
|||||||||||
|
2 / 2 / 0
Регистрация: 31.07.2017
Сообщений: 54
|
|
| 12.01.2018, 18:35 [ТС] | |
|
TRam_, точно! Проблема была в sizeof. Полагаю, что он брал размер указателя и тем самым выделялось не достаточно памяти для копирования.
0
|
|
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|
| 12.01.2018, 18:58 | |
char s[] - это не указатель, это статический массив. Неизвестного размера...
0
|
|
|
2 / 2 / 0
Регистрация: 31.07.2017
Сообщений: 54
|
|
| 12.01.2018, 19:40 [ТС] | |
|
TRam_, я про sizeof(s), имя массива это есть указатель на первый элемент
0
|
|
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|||||||
| 12.01.2018, 20:02 | |||||||
Добавлено через 1 минуту Хотя вот для адресной арифметики - да, так его можно рассматривать.
0
|
|||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
| 12.01.2018, 20:03 | ||||||
|
который изначально был рожден как константа - это UB так в принципе нельзя делать. Добавлено через 1 минуту на языке с++ не существует никаких массивов неизвестного размера.
1
|
||||||
|
2 / 2 / 0
Регистрация: 31.07.2017
Сообщений: 54
|
|
| 12.01.2018, 20:07 [ТС] | |
|
0
|
|
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|
| 12.01.2018, 20:11 | |
|
Tasen, и это значит что указатель и статический массив таки отличаются. По крайней мере в размере
0
|
|
|
2 / 2 / 0
Регистрация: 31.07.2017
Сообщений: 54
|
||
| 12.01.2018, 20:28 [ТС] | ||
|
hoggy,
2)Что такое UB? Добавлено через 6 минут на 2-й вопрос я нашел ответ
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||
| 12.01.2018, 20:38 | ||||||||
|
то снятие константности с его алиасов - технически корректно. по сути это - хак, и используется он для разруливания ситуаций плохо продуманных интерфейсов. наличие const_cast в коде - признак ущербной архитектуры. рассмотрим пример:
какой то балбес почему то заюзал в качестве аргумента указатель на константу. допустим теперь у нас легаси. а нам кровь из носу нужно модифицировать объект. на рефактор нет времени. мы даем себе честное слово, что больше так делать не будем, и применяем const_cast, закладываясь на то, что снаружи на самом деле придет мутабельный объект. неопределенное поведение. ситуация, когда произойти может все что угодно. например: все может прекрасно отработать. а в другой раз - поломаться в самом неожиданном месте. ну или компилятор может сгенерить код, который отправит вам открытку по почте. в вашем случае, вы делали запись по адресу константного объекта. зная, что объект рожден константой, и в угоду оптимизаций, компилятор мог расположить объект в области памяти "только для чтения". попытка записи в этот участок памяти - сигнал смерти от операционной системы.
0
|
||||||||
|
2 / 2 / 0
Регистрация: 31.07.2017
Сообщений: 54
|
|||||||
| 12.01.2018, 20:59 [ТС] | |||||||
|
hoggy, здорово.
Или просто книга слишком старая и за 10 лет язык претерпел множество изменений...
0
|
|||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 12.01.2018, 21:08 | |||
Сообщение было отмечено Tasen как решение
Решениелибо какая то опечатка от издательства. либо они балбесы)
0
|
|||
|
2 / 2 / 0
Регистрация: 31.07.2017
Сообщений: 54
|
|
| 12.01.2018, 21:18 [ТС] | |
|
hoggy, можете быть абсолютно уверены, что может быть 2-е или 3-е, либо ни то и не другое
0
|
|
| 12.01.2018, 21:18 | |
|
Помогаю со студенческими работами здесь
20
Приведение типа указателя C-style приведение типа: (T) x Приведение типа указателя на метод
Приведение типа через указатель Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|