М
08 грудня 2017 р. 17:30

Изменение переменных и структур динамической библиотекой.

Здравствуйте.

Точно знаю что функция динамической библиотеки может менять переменные , ссылки на которых даются при вызове функции. Скажите пожалуйста, может ли функция динамической библиотеки изменять переменные структур и классов?
4
Питання задається статтеюC++ - Підручник 011. Винятки

Вам це подобається? Поділіться в соціальних мережах!

8
Evgenii Legotckoi
  • 08 грудня 2017 р. 17:31

Может

    BlinCT
    • 08 грудня 2017 р. 17:47

    Поддерживаю, может.

      Evgenii Legotckoi
      • 08 грудня 2017 р. 17:56

      Может

        М
        • 08 грудня 2017 р. 18:05

        Я делаю ссылку на класс и меняю переменную класса. При чтении все хорошо, но при изменении переменной приложение закрывается с ошибкой. В консоли приложение пишет :

        ASSERT failure in QVector<T>::operator[]: "index out of range", file ..\..\Qt5.9.2\5.9.2\mingw53_32\include/QtCore/qvector.h, line 430

        Invalid parameter passed to C runtime function.

        Invalid parameter passed to C runtime function.

        C:\Qt\project\build-MyCandleSrick-Desktop_Qt_5_9_2_MinGW_32bit-Debug\debug\MyCandleSrick.exe exited with code 3

        Скажите пожалуйста, как исправить.

          BlinCT
          • 08 грудня 2017 р. 18:11

          Запустите в дебагу и посмотрите в какой момент и почему падает.

            М
            • 08 грудня 2017 р. 18:20

            Дебаг ничего не выдает. Только появляется сообщение об ошибке. После изменения переменной функция библиотеки работает. Но вот по завершению работы функции библиотеки и переходе к выполнению кода программы, программа вылетает.

              Evgenii Legotckoi
              • 08 грудня 2017 р. 18:24
              "index out of range" - ошибка, которая однозначно говорит о том, идёт обращение к элементу за пределами массива вектора. То есть, например, в векторе всего 10 элементов, а вы пытаетесь обратиться к 11-му. Если работать в режиме отладки, а не просто компилировать дебаг версию программы (запуск программы в режиме дебага осуществляется через клавишу F5), то можно будет увидеть стек вызовов и конкретно те места кода, в которых падает. Дальше нужно включить думалку и поразмыслить, почему, вы обращаетесь к неинициализированной области памяти.
                М
                • 08 грудня 2017 р. 18:29

                Спасибо большое за пояснение об ошибке, я ее нашел и исправил.

                  Коментарі

                  Only authorized users can post comments.
                  Please, Log in or Sign up