• Как документировать C++ проект?

    @nagayev Автор вопроса
    Adamos, Просто текст прям в маркдауне каком-нибудь?
    Я о таком думал, но md похоже подходит только для очень верхнеуровневого описания.
    Хотя хз
    Написано
  • Как изменить тональность?

    @nagayev Автор вопроса
    mayton2019, Есть входной музыкальный файл, на выходе хотелось бы файл с измененной тональностью.
    Т.е не обязательно в real-time.
    Написано
  • Почему не работает перемещение в C++?

    @nagayev Автор вопроса
    Окей, спасибо.
    Вопрос такой: где деаллоцировать память?
    Можно же в деструкторе класса написать:
    for (int i=0; i<imgs.size();i++) delete imgs[i];
    Просто если я напишу после addOperation
    delete a, то указатель станет невалидным, значит так нельзя.
    Поэтому были мысли про перемещение.
    Написано
  • Как преобразовать std::function в указатель на функцию?

    @nagayev Автор вопроса
    pupkinx1223, теперь возникла другая проблема:
    QObject::setParent: Cannot set parent, new parent is in a different thread
    QWidget::repaint: Recursive repaint detected
    QObject::setParent: Cannot set parent, new parent is in a different thread
    QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?

    Код такой:
    auto callback = [](PWLAN_NOTIFICATION_DATA data, void *pointer) {
            if (data != NULL && data -> NotificationSource == WLAN_NOTIFICATION_SOURCE_ACM) {
                if (data -> NotificationCode==wlan_notification_acm_disconnected) {
                    QMessageBox::warning(reinterpret_cast<RExaminationMain*>(pointer), "WIFI", "WIFI отключился");
                }
            }
        };
        int code = wifi->RegisterCallback(callback,(void*)this); //OnNotificationCallback
    int WifiManager::RegisterCallback(void (*callback)(PWLAN_NOTIFICATION_DATA, PVOID),void* context){
        dwResult = WlanRegisterNotification(
            hClient,
            WLAN_NOTIFICATION_SOURCE_ACM,
            TRUE,
            callback, //WLAN_NOTIFICATION_CALLBACK
            context,
            NULL,
            NULL);
        if (dwResult!=ERROR_SUCCESS){
            return WIFI_CALLBACK_ERROR;
        }
        return WIFI_NO_ERROR;
    }
    Написано
  • Как преобразовать std::function в указатель на функцию?

    @nagayev Автор вопроса
    Программа крашится.
    Написал вот такой код:
    //Внутри класса RExaminationMain:
    auto callback = [](auto, void *data) {
            QMessageBox::warning(reinterpret_cast<RExaminationMain*>(data), "WIFI", "WIFI отключился");
        };
        wifi->RegisterCallback(callback);

    Функция WifiManager::RegisterCallback:
    int WifiManager::RegisterCallback(void (*callback)(PWLAN_NOTIFICATION_DATA, PVOID)){
        dwResult = WlanRegisterNotification(
            hClient,
            WLAN_NOTIFICATION_SOURCE_ACM,
            TRUE,
            WLAN_NOTIFICATION_CALLBACK(callback),
            NULL,
            NULL,
            NULL);
        if (dwResult!=ERROR_SUCCESS){
            return WIFI_CALLBACK_ERROR;
        }
        return WIFI_NO_ERROR;
    }
    Написано
  • Как найти утечку памяти?

    @nagayev Автор вопроса
    Подождал пока утекло 10мб.
    Не очень понимаю как здесь искать утечку
    pprof

    goroutine profile: total 5
    1 @ 0x7ff69a1052ca 0x7ff69a16b069 0x7ff69a16af38 0x7ff69a1c22f8 0x7ff69a1efefe 0x7ff69a1e68f8 0x7ff69a1e7678 0x7ff69a223209 0x7ff69a232925 0x7ff69a3e303f 0x7ff69a16e501
    # 0x7ff69a16b068 syscall.SyscallN+0x108 C:/Program Files/Go/src/runtime/syscall_windows.go:557
    # 0x7ff69a16af37 syscall.Syscall9+0x77 C:/Program Files/Go/src/runtime/syscall_windows.go:507
    # 0x7ff69a1c22f7 syscall.WSARecv+0xb7 C:/Program Files/Go/src/syscall/zsyscall_windows.go:1295
    # 0x7ff69a1efefd internal/poll.(*FD).Read.func1+0x3d C:/Program Files/Go/src/internal/poll/fd_windows.go:437
    # 0x7ff69a1e68f7 internal/poll.execIO+0x77 C:/Program Files/Go/src/internal/poll/fd_windows.go:159
    # 0x7ff69a1e7677 internal/poll.(*FD).Read+0x2b7 C:/Program Files/Go/src/internal/poll/fd_windows.go:436
    # 0x7ff69a223208 net.(*netFD).Read+0x28 C:/Program Files/Go/src/net/fd_posix.go:55
    # 0x7ff69a232924 net.(*conn).Read+0x44 C:/Program Files/Go/src/net/net.go:183
    # 0x7ff69a3e303e net/http.(*connReader).backgroundRead+0x3e C:/Program Files/Go/src/net/http/server.go:674

    1 @ 0x7ff69a130956 0x7ff69a167c25 0x7ff69a529cb5 0x7ff69a529acd 0x7ff69a52684b 0x7ff69a535925 0x7ff69a536473 0x7ff69a3ea7ef 0x7ff69a3ec189 0x7ff69a3ed936 0x7ff69a3e9312 0x7ff69a16e501
    # 0x7ff69a167c24 runtime/pprof.runtime_goroutineProfileWithLabels+0x24 C:/Program Files/Go/src/runtime/mprof.go:844
    # 0x7ff69a529cb4 runtime/pprof.writeRuntimeProfile+0xb4 C:/Program Files/Go/src/runtime/pprof/pprof.go:734
    # 0x7ff69a529acc runtime/pprof.writeGoroutine+0x4c C:/Program Files/Go/src/runtime/pprof/pprof.go:694
    # 0x7ff69a52684a runtime/pprof.(*Profile).WriteTo+0x14a C:/Program Files/Go/src/runtime/pprof/pprof.go:329
    # 0x7ff69a535924 net/http/pprof.handler.ServeHTTP+0x4a4 C:/Program Files/Go/src/net/http/pprof/pprof.go:259
    # 0x7ff69a536472 net/http/pprof.Index+0xf2 C:/Program Files/Go/src/net/http/pprof/pprof.go:376
    # 0x7ff69a3ea7ee net/http.HandlerFunc.ServeHTTP+0x2e C:/Program Files/Go/src/net/http/server.go:2122
    # 0x7ff69a3ec188 net/http.(*ServeMux).ServeHTTP+0x148 C:/Program Files/Go/src/net/http/server.go:2500
    # 0x7ff69a3ed935 net/http.serverHandler.ServeHTTP+0x315 C:/Program Files/Go/src/net/http/server.go:2936
    # 0x7ff69a3e9311 net/http.(*conn).serve+0x611 C:/Program Files/Go/src/net/http/server.go:1995

    1 @ 0x7ff69a13d896 0x7ff69a133ed7 0x7ff69a168029 0x7ff69a1e52f2 0x7ff69a1e6977 0x7ff69a1e7678 0x7ff69a223209 0x7ff69a232925 0x7ff69a1b91e3 0x7ff69a537745 0x7ff69a537726 0x7ff69a537ed0 0x7ff69a53f1c5 0x7ff69a53f747 0x7ff69a16e501
    # 0x7ff69a168028 internal/poll.runtime_pollWait+0x88 C:/Program Files/Go/src/runtime/netpoll.go:306
    # 0x7ff69a1e52f1 internal/poll.(*pollDesc).wait+0x31 C:/Program Files/Go/src/internal/poll/fd_poll_runtime.go:84
    # 0x7ff69a1e6976 internal/poll.execIO+0xf6 C:/Program Files/Go/src/internal/poll/fd_windows.go:175
    # 0x7ff69a1e7677 internal/poll.(*FD).Read+0x2b7 C:/Program Files/Go/src/internal/poll/fd_windows.go:436
    # 0x7ff69a223208 net.(*netFD).Read+0x28 C:/Program Files/Go/src/net/fd_posix.go:55
    # 0x7ff69a232924 net.(*conn).Read+0x44 C:/Program Files/Go/src/net/net.go:183
    # 0x7ff69a1b91e2 io.ReadAll+0x102 C:/Program Files/Go/src/io/io.go:701
    # 0x7ff69a537744 io/ioutil.ReadAll+0x1a4 C:/Program Files/Go/src/io/ioutil/ioutil.go:27
    # 0x7ff69a537725 main.ASIC.executeWhats+0x185 C:/Users/Марат/Documents/Code/bot — копия — копия/asic.go:70
    # 0x7ff69a537ecf main.(*ASIC).getStats+0x22f C:/Users/Марат/Documents/Code/bot — копия — копия/asic.go:117
    # 0x7ff69a53f1c4 main.handleWorkingASICS+0x444 C:/Users/Марат/Documents/Code/bot — копия — копия/db_worker.go:125
    # 0x7ff69a53f746 main.dbWorker+0x186 C:/Users/Марат/Documents/Code/bot — копия — копия/db_worker.go:211

    1 @ 0x7ff69a13d896 0x7ff69a133ed7 0x7ff69a168029 0x7ff69a1e52f2 0x7ff69a1e6977 0x7ff69a1eb1cd 0x7ff69a1eb536 0x7ff69a225065 0x7ff69a23aec5 0x7ff69a239e9d 0x7ff69a3edea5 0x7ff69a3edadd 0x7ff69a541c68 0x7ff69a541c40 0x7ff69a13d477 0x7ff69a16e501
    # 0x7ff69a168028 internal/poll.runtime_pollWait+0x88 C:/Program Files/Go/src/runtime/netpoll.go:306
    # 0x7ff69a1e52f1 internal/poll.(*pollDesc).wait+0x31 C:/Program Files/Go/src/internal/poll/fd_poll_runtime.go:84
    # 0x7ff69a1e6976 internal/poll.execIO+0xf6 C:/Program Files/Go/src/internal/poll/fd_windows.go:175
    # 0x7ff69a1eb1cc internal/poll.(*FD).acceptOne+0x6c C:/Program Files/Go/src/internal/poll/fd_windows.go:936
    # 0x7ff69a1eb535 internal/poll.(*FD).Accept+0x1d5 C:/Program Files/Go/src/internal/poll/fd_windows.go:970
    # 0x7ff69a225064 net.(*netFD).accept+0x64 C:/Program Files/Go/src/net/fd_windows.go:139
    # 0x7ff69a23aec4 net.(*TCPListener).accept+0x24 C:/Program Files/Go/src/net/tcpsock_posix.go:148
    # 0x7ff69a239e9c net.(*TCPListener).Accept+0x3c C:/Program Files/Go/src/net/tcpsock.go:297
    # 0x7ff69a3edea4 net/http.(*Server).Serve+0x384 C:/Program Files/Go/src/net/http/server.go:3059
    # 0x7ff69a3edadc net/http.(*Server).ListenAndServe+0x7c C:/Program Files/Go/src/net/http/server.go:2988
    # 0x7ff69a541c67 net/http.ListenAndServe+0x347 C:/Program Files/Go/src/net/http/server.go:3242
    # 0x7ff69a541c3f main.main+0x31f C:/Users/Марат/Documents/Code/bot — копия — копия/index.go:203
    # 0x7ff69a13d476 runtime.main+0x1f6 C:/Program Files/Go/src/runtime/proc.go:250

    1 @ 0x7ff69a13d896 0x7ff69a14d59e 0x7ff69a4280ed 0x7ff69a16e501
    # 0x7ff69a4280ec database/sql.(*DB).connectionOpener+0x8c C:/Program Files/Go/src/database/sql/sql.go:1218

    Тоже самое в виде скриншота:
    64cffaeee4c14315540498.png
    UPD: на другой странице про горутину connectionOpener написано, что она в стадии select 30 минут и это значение всегда растет.
    Другие горутины спят/ожидают IO.
    Написано
  • Как найти утечку памяти?

    @nagayev Автор вопроса
    Спасибо! Обязательно попробую. Пакет unsafe не использую, да.
    Написано
  • Как найти утечку памяти?

    @nagayev Автор вопроса
    В коде упоминаются функции device.getStats. Суть такая:
    func (device Device) execute(command string) ([]byte, error) {
    	text:=fmt.Sprintf("{\"command\": \"%s\"}",command)
    	s, err := net.DialTimeout("tcp", device.ip+":"+device.port,300*time.Millisecond)
    	if err!= nil {
    		return []byte{}, err
    	}
    	defer s.Close()
    	fmt.Fprintf(s, text)
    	buf,err:=ioutil.ReadAll(s)
    	if err!=nil{
    		return []byte{}, err
    	}
            return buf, nil
    }
    func (device *Device) getStats() ([]byte, error) {
    return device.execute("command");
    }
    Написано
  • Почему parentWidget возвращает nullptr?

    @nagayev Автор вопроса
    Александр Ананьев, в вопросе как мне кажется все есть.
    Там показано как создается объект и что ему передается this в качестве родителя.
    Написано
  • Почему parentWidget возвращает nullptr?

    @nagayev Автор вопроса
    Александр Ананьев,
    RNewExaminationWindow newExamination = new RNewExaminationWindow(this);
    Написано
  • Почему parentWidget возвращает nullptr?

    @nagayev Автор вопроса
    Dmitrii, Да
    class RNewExaminationWindow : public QDialog{
        Q_OBJECT
    
    public:
        RNewExaminationWindow(QWidget* p);
        ~RNewExaminationWindow();
    };
    Написано
  • Как исправить ошибку с QUrl?

    @nagayev Автор вопроса
    Dmitrii, Написал выше в комментарии.
    Написано
  • Как исправить ошибку с QUrl?

    @nagayev Автор вопроса
    Александр Ананьев, возможно проблема в forward declaration
    Имеется 4 файла examination_screen.h,cpp и RFilters.h,cpp
    Заголовочные содержат объявление одноименных классов и некоторые инклуды.
    // examination_screen.cpp:
    class ExaminationScreen{
    .....
    filters = new RFilters(this);
    filters->setGeometry(...)
    };
    // examination_screen.h:
    #include "RFilters.h"

    RFilters:
    //RFilters.h
    class RFilters{
    //....
    };
    class RFiltersMain{
    //....
    };
    //RFilters.cpp
    
    class ExaminationScreen;
    
    RFilters::RFilters(QWidget* parent){
    main=RFiltersMain(parent);
    }
    RFiltersMain::RFiltersMain(QWidget* parent){
    parent = (ExaminationScreen*) parent;
    parent->obj.doSomething();
    }
    Написано
  • Как запустить горутину навечно?

    @nagayev Автор вопроса
    Иерокопус Таманский, Как запустить горутину навечно чтобы не утекала память, если быть точнее.
    Написано
  • Как запустить горутину навечно?

    @nagayev Автор вопроса
    calculator212, Я понимаю что конкретики нет. Просто я где-то читал что вечно запущенная горутина это и есть источник утечек памяти. Поэтому никаких подробностей не привожу.
    Написано
  • Как запустить горутину навечно?

    @nagayev Автор вопроса
    Иерокопус Таманский, При запуске проги потребление что-то около 7.5мб, через несколько часов уже 75.
    Хотя теоретически может утекать в другом месте. Версия го 1.20.4
    Написано
  • Где можно почитать историю Windows API?

    @nagayev Автор вопроса
    hint000, Да, интересно почитать про конкретные функции.
    За ссылку спасибо - изучу.
    Написано
  • Как исправить LNK ERROR?

    @nagayev Автор вопроса
    mayton2019, Compiler out of heap space.
    Легче не стало)
    Может места на ssd мало - 500мб где-то
    Написано
  • Как подключиться к Wifi на C++?

    @nagayev Автор вопроса
    C15H22N6O5S, я искал библиотеку для плюсов, которая будет за меня обращаться к апи ос
    но видимо такой нет
    сейчас сам пишу
    Написано