0 / 0 / 0
Регистрация: 23.08.2020
Сообщений: 19
|
|||||||||||
Ошибка при чтении символов строки при создании объекта класса26.03.2021, 17:42. Показов 3625. Ответов 9
У меня имеется класс Song, в котором присутствуют поля имени песни (Name) и длительности песни (Duration). Также в этом классе есть конструктор, заполняющий поля стандартными значениями. При создании такого объекта в main() смотрю через отладчик, что в поле Name (а именно - Name -> _MyPair -> Базовое представление -> _MyVal2 -> _Bx -> _Ptr) есть надпись - "ошибка при чтении символов строки". Причем странно, что все время все компилилось и работало, но сегодня почему-то вылезло такое. Короче, сам код:
0
|
26.03.2021, 17:42 | |
Ответы с готовыми решениями:
9
Ошибка при чтении объекта класса из файла
|
Вездепух
![]() ![]() ![]() 12901 / 6761 / 1816
Регистрация: 18.10.2014
Сообщений: 17,096
|
|||
27.03.2021, 06:09 | |||
Также: где в вашем вопросе написано, какую реализацию std::string вы использовали? Компилятор? Отладчик?Внутреннее представление класса std::string зависит от реализации и может быть оптимизировано массой разных способов, особенно для коротких или пустых строк. Вполне возможно, что для такой - пустой - строки через этот указатель и не должно быть видно никаких осмысленных символов. Да, и я тоже вижу, что у меня в Visual Studio в таком примере поле ... _Bx -> _Ptr содержит мусор. Это нормально.Возьмите строку подлиннее, и вы увидите, что, начиная с какой-то длины (16 символов?), начнет использоваться поле ... _Bx -> _Ptr .Еще раз: где описание реальной проблемы, которую вы пытаетесь решить? Что не работает?
0
|
0 / 0 / 0
Регистрация: 23.08.2020
Сообщений: 19
|
||||||||
27.03.2021, 06:29 [ТС] | ||||||||
Добавлено через 6 минут У меня еще есть класс Band (это сама группа, но она не так важна, там лишь метод сравнения песен лежит, который нужен).
0
|
Вездепух
![]() ![]() ![]() 12901 / 6761 / 1816
Регистрация: 18.10.2014
Сообщений: 17,096
|
|||
27.03.2021, 06:39 | |||
Поле ... _Bx -> _Ptr в отладочном режиме содержит 0x6161616161616161 или 0xcdcdcdcdcdcdcd00 , т.е. какое-то явно специально выбранное бессмысленно-мусорное указательное значение. А сообщение об "ошибке" вам пишет уже отладчик. Никуда это сообщение не "записывается".... _Bx -> _Ptr эта ошибка не имеет. Вы накосячили где-то совсем в другом месте.
0
|
0 / 0 / 0
Регистрация: 23.08.2020
Сообщений: 19
|
||
27.03.2021, 06:40 [ТС] | ||
0
|
Вездепух
![]() ![]() ![]() 12901 / 6761 / 1816
Регистрация: 18.10.2014
Сообщений: 17,096
|
||||
27.03.2021, 06:50 | ||||
![]() Решениеstd::string .... _Bx -> _Ptr ваше "перестала работать" не имеет. Вы накосячили где-то совсем в другом месте.Перестаньте заниматься фигней и разглядывать ... _Bx -> _Ptr , а ищите у себя косяки: вылет за пределы массива, обращение к удаленной памяти и т.п.Добавлено через 6 минут Ваш цикл поиска песни написан так, что последовательность песен в альбоме обязательно (!) должна заканчиваться песней с пустым именем. Не "мусором", а песней с пустым именем (!). Если в альбоме 4 песни, то размер массива песен должен равняться 5 и последняя "фиктивная" песня должна иметь пустое имя. Если вы не соблюдете это жесткое правило, программа будет падать.
1
|
0 / 0 / 0
Регистрация: 23.08.2020
Сообщений: 19
|
||||
27.03.2021, 07:13 [ТС] | ||||
UPD. Хм, точно, выделил на 1 больше размер массива - все теперь работает и с пустым значением строки. Спасибо большое!
0
|
фрилансер
![]() 6385 / 5542 / 1118
Регистрация: 11.10.2019
Сообщений: 14,725
|
||||||
27.03.2021, 07:29 | ||||||
Skel, Вот ещё вариант с STL, смотри, насколько всё проще )) Не нужно три дня штурмовать форум, десять минут - и всё готово
1
|
Вездепух
![]() ![]() ![]() 12901 / 6761 / 1816
Регистрация: 18.10.2014
Сообщений: 17,096
|
|||
27.03.2021, 07:33 | |||
![]() При встрече с "мусором" происходит неопределенное поведение и ваша программа падает во все воронье горло. А то, что вам раньше казалось, что она не падала - это вы ее просто плохо тестировали. Разумнее/экономнее было бы хранить размер массива, как это делает std::vector , а не цеплять в конце массива дополнительную фиктивную песню с пустым именем. Но и так тоже можно. А еще разумнее было бы просто использовать std::vector .Главное - если вы будете рассчитывать на ваше наивное "при встрече с мусором он его считает за пустую строку", то ваша программа будет просто падать.
1
|
27.03.2021, 07:33 | |
Помогаю со студенческими работами здесь
10
Ошибка в работе класса при создании нового объекта
Ошибка при чтении символов строки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Звёздная пыль
kumehtar 20.06.2025
Я просто это себе представляю: как создавался этот мир. Как энергия слипалась в маленькие частички. Как они собирались в первые звёзды, как во вселенной впервые появился Свет. Как эти звёзды. . .
|
Создание нейросети с PyTorch
AI_Generated 19.06.2025
Ключевое преимущество PyTorch — его питоновская натура. В отличие от TensorFlow, который изначально был построен как статический вычислительный граф, PyTorch предлагает динамический подход. Это. . .
|
JWT аутентификация в ASP.NET Core
UnmanagedCoder 18.06.2025
Разрабатывая веб-приложения, я постоянно сталкиваюсь с дилеммой: как обеспечить надежную аутентификацию пользователей без ущерба для производительности и масштабируемости? Классические подходы на. . .
|
Краткий курс по С#
aaLeXAA 18.06.2025
Здесь вы найдете все необходимые функции чтоб написать програму на C#
Задание 1:
КЛАСС FORM 1
public partial class Form1 : Form
{
Spisok listin = new Spisok();
. . .
|
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
|
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
|
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
|
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
|
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
|
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
|