Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос

Urilobus

  • 0
    вклад
  • 7
    вопросов
  • 2
    ответа
  • 0%
    решений
Комментарии
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • В каком из конструкторов ошибка?

    Urilobus @Urilobus Автор вопроса
    maaGames, спасибо, буду смотреть дальше
    Написано 16 нояб. 2022
  • В каком из конструкторов ошибка?

    Urilobus @Urilobus Автор вопроса
    maaGames, вставил этот код, также ошибка, где помечено в перемещающем присваивании в delete[] Mat_1[i]. Может я удаляю больше памяти, чем требуется, delete[] ведь знает сколько байт очищать, это значение нельзя узнать?
    Написано 16 нояб. 2022
  • В каком из конструкторов ошибка?

    Urilobus @Urilobus Автор вопроса
    maaGames, Если стразу после delete прописать заполнение nullptr, возникает исключение, т.к. некуда записывать nullptr, а по поводу перемещающего конструктора, не совсем понял, я создаю новый указатель на nullptr и меняю его внутренности местами с нужным указателем, после чего старый указатель становиться nullptr и его удаляет деструктор, если я просто его удалю, не назначая nullptr, то он удалит содержимое и нового указателя, т.к. ссылается на туже ячейку.
    Написано 16 нояб. 2022
  • В каком из конструкторов ошибка?

    Urilobus @Urilobus Автор вопроса
    Перед удаление векторов заполняю их -1
    for (int i = 0; i < 3; i++)
                for (int j = 0; j < 3; j++) Mat_1[i][j] = -1;
            if (Mat_1 != nullptr)
            {
                for (int i = 0; i < rows_num; i++) delete[] this->Mat_1[i];     
            }
            delete[] Mat_1;

    никаких артефактов это не вызывает, -1 не вылезают по ходу программы.
    Отследил место с ошибкой в Debug, но в чем проблема понять пока так и не получилось. Выписал ход программы с адресами указателей в виде (this->Mat_1->Mat_1[1]).
    63747daf62115693128613.jpeg
    63747dc419ea1716493431.jpeg
    в строчке 3.1.3 на мой взгляд отрабатывает корректно, а в аналогичной строчке 3.2.3 не может удалить Mat_1[i], хотя она отображается в дебаге и ее можно вывести в консоль перед удалением.
    Написано 16 нояб. 2022
  • В каком из конструкторов ошибка?

    Urilobus @Urilobus Автор вопроса
    Проблема именно при удалении внутренних указателей Mat_1[i], если убрать строки
    for (int i = 0; i < rows_num; i++) delete[] Mat_1[i];
    в перемещающем присваивании и деструкторе, программа отработает до конца с кодом 0, но как я понимаю, в таком случае будет утекать память каждый раз в количестве строк матриц на каждую матрицу.
    Написано 15 нояб. 2022
  • В каком из конструкторов ошибка?

    Urilobus @Urilobus Автор вопроса
    Добавил проверку на nullptr, но проблема осталась, т.к. Intermid_Mat во втором случае (в конце Kramer_solver) полноценный объект Matrix, для проверки вывожу его в консоль через строку выше (если есть другой способ проверить, буду признателен), но при попытке очистить память (при присваивании) возникает ошибка будто нечего очищать.
    Написано 15 нояб. 2022
  • Как правильно оформить присваивание значения возвращаемого из функции C++?

    Urilobus @Urilobus Автор вопроса
    Wataru, Огромное спасибо!!!
    Написано 05 авг. 2022
  • Как правильно оформить присваивание значения возвращаемого из функции C++?

    Urilobus @Urilobus Автор вопроса
    Wataru, Если я правильно понимаю, то нельзя перегрузить оператор, отличающийся только типом возвращаемого значения
    Написано 05 авг. 2022
  • Как правильно оформить присваивание значения возвращаемого из функции C++?

    Urilobus @Urilobus Автор вопроса
    Евгений Шатунов, Вы правы, дело в категории prvalue. Благодарю за статью. Я отказался от способа передачи по константной ссылке, так как в таком случае у меня в конструкторе копирования и в операторе присваивания при передачи в них аргумента (const Matrix& Mat) выдавал ошибку при попытке обратиться к элементу матрицы Mat(i,j);
    оператор для обращения к элементу прописан так
    double& operator()(int index1, int index2)
        {
    	    return Mat_1[index1][index2];
        }
    Написано 05 авг. 2022
  • Как правильно оформить присваивание значения возвращаемого из функции C++?

    Urilobus @Urilobus Автор вопроса
    res2001, Спасибо за ответ. Насчёт выделение памяти сразу большим блоком, я поступил иначе, т.к. предполагается работа с большими массивами данных и возможно, что в памяти не будет иметься столько свободного места одним блоком, если я правильно понимаю механику работы
    Написано 05 авг. 2022
  • Как правильно считать float из файла .txt Python?

    Urilobus @Urilobus Автор вопроса
    Dr. Bacon, ты прав, не в тот файл смотрел,...извини, что отвлёк
    Написано 26 июн. 2022
  • Как правильно считать float из файла .txt Python?

    Urilobus @Urilobus Автор вопроса
    Dr. Bacon, нет, в файле значение правильное
    Написано 26 июн. 2022
  • Как правильно считать float из файла .txt Python?

    Urilobus @Urilobus Автор вопроса
    Dr. Bacon, f.read(64) выдаёт округлённое значение
    Написано 26 июн. 2022
  • Как правильно исполнить .exe в Python?

    Urilobus @Urilobus Автор вопроса
    Urilobus, перезаписанный .txt сохраняется в папку с исполняемым файлом python.exe, а не в папку с C++.exe
    Написано 08 июн. 2022
  • Как правильно исполнить .exe в Python?

    Urilobus @Urilobus Автор вопроса
    Александр, Точно, спасибо, проблема была в том, что программы лежат в разных папках и python перезаписывал в другой файл. Не знаю когда бы сам догадался.)
    Написано 08 июн. 2022
  • Как правильно исполнить .exe в Python?

    Urilobus @Urilobus Автор вопроса
    Я имею ввиду, что сам он может создавать и записывать файлы, но программам, которые он запускает внутри своей среды этого не позволяет. На сколько это возможно?

    Для уточнения, файл python, я тоже скомпелировал в .exe, чтобы запускать его вне среды программирования, проблема сохранилась.
    Написано 08 июн. 2022
  • Как правильно исполнить .exe в Python?

    Urilobus @Urilobus Автор вопроса
    При работе программы ошибки не возникают. Я плохо понимаю специфику работы python, может ли это быть связано с тем, что он работает в виртуальной среде (если я правильно понимаю) и программы которые он вызывает не могут записывать данные во внешние файлы?
    Написано 08 июн. 2022
  • Как правильно исполнить .exe в Python?

    Urilobus @Urilobus Автор вопроса
    C++.exe (который library_one.exe) отрабатывает отлично при запуске через консоль, все считает и перезаписывает, а при запуске его в коде python, он тоже отрабатывает, что видно по выводу данных в консоли, но файл .txt не перезаписывает
    Написано 08 июн. 2022
Самые активные сегодня
  • firedragon
    Владимир Коротенко
    • 8 ответов
    • 0 вопросов
  • Vindicar
    Vindicar
    • 7 ответов
    • 0 вопросов
  • vabka
    Василий Банников
    • 6 ответов
    • 0 вопросов
  • mayton2019
    • 5 ответов
    • 0 вопросов
  • Sozdavan
    • 5 ответов
    • 0 вопросов
  • CityCat4
    CityCat4
    • 4 ответа
    • 0 вопросов
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации