|
6 / 6 / 1
Регистрация: 09.02.2016
Сообщений: 296
|
||||||
Странное поведение указателя07.09.2024, 12:39. Показов 2295. Ответов 14
Метки нет (Все метки)
Добрый день!
Есть такой кусок кода. В качестве параметра в данный метод передается указатель на вектор, размером 7 элементов. После приравнивания я ожидаю, что _outputs->size(); и outputs->size(); будут иметь одинаковый размер, но по факту получается ерунда. Кто может подсказать в чем проблема, бьюсь несколько часов уже. .h
0
|
||||||
| 07.09.2024, 12:39 | |
|
Ответы с готовыми решениями:
14
Странное поведение указателя Странное поведение bool
|
|
фрилансер
6467 / 5682 / 1131
Регистрация: 11.10.2019
Сообщений: 15,145
|
||||||
| 07.09.2024, 13:38 | ||||||
|
a13428711, а вот так что говорит?
нужен заголовок <cassert>
кстати, а зачем это насильное приведение к int, используй size_t
0
|
||||||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 07.09.2024, 14:12 | |
|
a13428711, а вы знаете про правило Трех/Пяти/Нуля ?
Добавлено через 6 минут a13428711, то что вы наблюдаете, вероятно проявление UB, то есть, указатель уже не валидный пришел в функцию на скриншоте. Ищите ошибку ранее по вызовам.
0
|
|
|
6 / 6 / 1
Регистрация: 09.02.2016
Сообщений: 296
|
|
| 07.09.2024, 14:28 [ТС] | |
|
SmallEvil, да не, первый size же нормально отработал, добавленные в вектор элементы есть если в отладчике глянуть
Добавлено через 10 минут Алексей1153, вернусь домой гляну. А приведение это на время отладки, я уже на всё погрешить успел)
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||
| 07.09.2024, 14:43 | |||
|
То есть вы не доверяете моему мнению и уверены что между одним вызовом size и другим случилась магия ? Ну тогда ищите-свищите ![]() Кто ж вам доктор. Добавлено через 1 минуту Они могут просто лежать, пока та область памяти никому не понадобится.
0
|
|||
|
6 / 6 / 1
Регистрация: 09.02.2016
Сообщений: 296
|
|
| 07.09.2024, 15:45 [ТС] | |
|
SmallEvil, Можно по сути проверит адрес на момент создания и на момент присвоения, совпадают или нет. Или как?
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 07.09.2024, 16:02 | ||
|
1. Проверьте на соблюдение правила Трех/Пяти. 2. Проверьте время жизни ваших объектов. Кто где создавался и кто, кем, где и когда уничтожается. Просто в коде, этого нельзя сделать, только обертки с логированием. Добавлено через 3 минуты Я надеюсь у вас всё в одном потоке выполняется ? Добавлено через 1 минуту И для практического использования, для всех не низкоуровневых классов откажитесь от сырых указателей. Замените их умными указателями.
0
|
||
|
6 / 6 / 1
Регистрация: 09.02.2016
Сообщений: 296
|
|
| 07.09.2024, 18:39 [ТС] | |
|
SmallEvil, но если самого объекта нет, то я же не смог бы обратиться к нему через size()?
Я не критикую, просто хочу докопаться до истины - непривычно после шарпа работать таким образом с классами, а в чистом С с такими приколами не сталкивался. С плюсами третий день работаю.
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||
| 07.09.2024, 20:19 | |||
|
Вы так и не ответили на вопрос знакомы ли вы с этими правилами ?
0
|
|||
|
6 / 6 / 1
Регистрация: 09.02.2016
Сообщений: 296
|
||||||||||||||||||||||
| 07.09.2024, 21:08 [ТС] | ||||||||||||||||||||||
|
Добрался до компа.
Прочел несколько статей, но пока как обычно - в теории понятно, но как применять на практике непонятно. На скриншоте отметил, что это момент, когда мы уже прошли момент приравнивания указателей, но у outputs и _outputs: 1) разные адреса (хотя тут может так и должно быть, пока не уверен); 2) разная структура объектов - у _outputs я могу увидеть внутренние классы с валидными значениями, а у outputs значений нет. А теперь по коду сверху вниз: Тут собственно создается вектор и сразу пробрасывается в метод инициализации другого класса:
0
|
||||||||||||||||||||||
|
Вездепух
13184 / 6820 / 1821
Регистрация: 18.10.2014
Сообщений: 17,263
|
||||||||||||
| 07.09.2024, 21:41 | ||||||||||||
Сообщение было отмечено a13428711 как решение
РешениеДля начала надо бы сделать эти ваши проверки до того, как делается
Если там все в порядке, то это будет означать, что вышепроцитированные строки по какой-то причине делают больше, чем кажется. Также, почему поля _outputsOn и _outputsOff как будто содержат мусор? Чем равен указатель outputSignals3v3 в момент вызова
1
|
||||||||||||
|
6 / 6 / 1
Регистрация: 09.02.2016
Сообщений: 296
|
||||||||||||||||||||||||
| 07.09.2024, 22:25 [ТС] | ||||||||||||||||||||||||
Добавлено через 6 минут Жесть какая, я бы в жизни не догадался, что если я обращусь к указателю, для которого не создавался объект, то он позволит мне через дебаггер провалится в метод в классе, на который должна указывать. Экземпляра же нет, как так-то?! Ошибка была в том, что я случайно изменил объявление класса outputSignals3v3 с экземпляра на указатель:
0
|
||||||||||||||||||||||||
|
754 / 351 / 90
Регистрация: 07.01.2023
Сообщений: 1,451
|
||
| 08.09.2024, 19:02 | ||
|
0
|
||
|
Вездепух
13184 / 6820 / 1821
Регистрация: 18.10.2014
Сообщений: 17,263
|
||||
| 08.09.2024, 20:08 | ||||
|
Если бы там присутствовала VMT, то любой виртуальный вызов приводил бы к падению с 99.9% вероятностью. nullptr? Что передадите, то и будет. Возможно какой-то совсем посторонний мусор...
0
|
||||
|
754 / 351 / 90
Регистрация: 07.01.2023
Сообщений: 1,451
|
||
| 08.09.2024, 20:29 | ||
|
0
|
||
| 08.09.2024, 20:29 | |
|
Помогаю со студенческими работами здесь
15
Странное поведение set::erase при изменении компаратора
Странное поведение указателя Странное поведение указателя
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Архитектура слоя интернета для сервера-слоя.
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
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|