Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Special Interest Groups
  3. C++ Gurus
  4. Deallocate memory to singleton class which access database ?
Forum Updated to NodeBB v4.3 + New Features

Deallocate memory to singleton class which access database ?

Scheduled Pinned Locked Moved Solved C++ Gurus
35 Posts 5 Posters 4.5k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • KroMignonK KroMignon

    @Qt-embedded-developer said in Deallocate memory to singleton class which access database ?:

    Hi i am not using qt . and sorry i can not enable C++ 11. i can access map like std::map .

    The problem is not std::map<>() but the way you iterate through the map: for (const auto& kv : sqliteManagerMap) requires at least C++11 support enabled! (cf. https://en.cppreference.com/w/cpp/container/map)

    I don't know which kind of C++ compiler you are using, for GCC for example enabling C++11 is done with -std=c++11 or -std=gnu++11

    Q Offline
    Q Offline
    Qt embedded developer
    wrote on last edited by
    #21

    @KroMignon i can not enable it like that because any change like that not allowed in my device.

    J.HilkJ KroMignonK 2 Replies Last reply
    0
    • Q Qt embedded developer

      @KroMignon i can not enable it like that because any change like that not allowed in my device.

      J.HilkJ Offline
      J.HilkJ Offline
      J.Hilk
      Moderators
      wrote on last edited by
      #22

      @Qt-embedded-developer than do a normal for(x; x<y; ++x) loop


      Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


      Q: What's that?
      A: It's blue light.
      Q: What does it do?
      A: It turns blue.

      Q 1 Reply Last reply
      1
      • J.HilkJ J.Hilk

        @Qt-embedded-developer than do a normal for(x; x<y; ++x) loop

        Q Offline
        Q Offline
        Qt embedded developer
        wrote on last edited by
        #23

        @J-Hilk ,@jsulm ,@jsulm ,@KroMignon Thanks for enormous support.

        i have written like it below and now its not show any error:

        void SqliteManagerBGSync::cleanup()
        {
        for (short int i =0 ; i<sizeof(sqliteManagerMap);i++)
        {
            delete sqliteManagerMap[i];
        }
        sqliteManagerMap.clear();
        
        }
        
        J.HilkJ 1 Reply Last reply
        0
        • Q Qt embedded developer

          @J-Hilk ,@jsulm ,@jsulm ,@KroMignon Thanks for enormous support.

          i have written like it below and now its not show any error:

          void SqliteManagerBGSync::cleanup()
          {
          for (short int i =0 ; i<sizeof(sqliteManagerMap);i++)
          {
              delete sqliteManagerMap[i];
          }
          sqliteManagerMap.clear();
          
          }
          
          J.HilkJ Offline
          J.HilkJ Offline
          J.Hilk
          Moderators
          wrote on last edited by
          #24

          @Qt-embedded-developer
          using sizeof is almost certainly wrong here.

          std::map has a size() function, please use that.
          https://en.cppreference.com/w/cpp/container/map/size


          Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


          Q: What's that?
          A: It's blue light.
          Q: What does it do?
          A: It turns blue.

          1 Reply Last reply
          3
          • Q Qt embedded developer

            @KroMignon i can not enable it like that because any change like that not allowed in my device.

            KroMignonK Offline
            KroMignonK Offline
            KroMignon
            wrote on last edited by KroMignon
            #25

            @Qt-embedded-developer said in Deallocate memory to singleton class which access database ?:

            i can not enable it like that because any change like that not allowed in my device.

            As @jsulm already wrote before, replace auto with the corresponding type:

            for(std::map<int,SqliteManagerBGSync*>::iterator it = sqliteManagerMap::begin(); it != sqliteManagerMap::end(); ++it)
            {
            ...
            }
            

            It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

            J.HilkJ Q 3 Replies Last reply
            1
            • KroMignonK KroMignon

              @Qt-embedded-developer said in Deallocate memory to singleton class which access database ?:

              i can not enable it like that because any change like that not allowed in my device.

              As @jsulm already wrote before, replace auto with the corresponding type:

              for(std::map<int,SqliteManagerBGSync*>::iterator it = sqliteManagerMap::begin(); it != sqliteManagerMap::end(); ++it)
              {
              ...
              }
              
              J.HilkJ Offline
              J.HilkJ Offline
              J.Hilk
              Moderators
              wrote on last edited by J.Hilk
              #26

              @KroMignon IIRC range based for loops is a c++11 feature in itself 🤔

              never mind, I think need a break!


              Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


              Q: What's that?
              A: It's blue light.
              Q: What does it do?
              A: It turns blue.

              KroMignonK 1 Reply Last reply
              0
              • J.HilkJ J.Hilk

                @KroMignon IIRC range based for loops is a c++11 feature in itself 🤔

                never mind, I think need a break!

                KroMignonK Offline
                KroMignonK Offline
                KroMignon
                wrote on last edited by
                #27

                @J-Hilk said in Deallocate memory to singleton class which access database ?:

                IIRC range based for loops is a c++11 feature in itself 🤔

                Are you sure? I don't believe that std::map<>::iterator support is comming with C++11.

                It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

                jsulmJ 1 Reply Last reply
                0
                • KroMignonK KroMignon

                  @J-Hilk said in Deallocate memory to singleton class which access database ?:

                  IIRC range based for loops is a c++11 feature in itself 🤔

                  Are you sure? I don't believe that std::map<>::iterator support is comming with C++11.

                  jsulmJ Offline
                  jsulmJ Offline
                  jsulm
                  Lifetime Qt Champion
                  wrote on last edited by
                  #28

                  @KroMignon I think @J-Hilk misunderstood your code: you are not using range based loop

                  https://forum.qt.io/topic/113070/qt-code-of-conduct

                  1 Reply Last reply
                  1
                  • KroMignonK KroMignon

                    @Qt-embedded-developer said in Deallocate memory to singleton class which access database ?:

                    i can not enable it like that because any change like that not allowed in my device.

                    As @jsulm already wrote before, replace auto with the corresponding type:

                    for(std::map<int,SqliteManagerBGSync*>::iterator it = sqliteManagerMap::begin(); it != sqliteManagerMap::end(); ++it)
                    {
                    ...
                    }
                    
                    Q Offline
                    Q Offline
                    Qt embedded developer
                    wrote on last edited by Qt embedded developer
                    #29

                    @KroMignon Here inside for loop i need to write

                    for(std::map<int,SqliteManagerBGSync*>::iterator it = sqliteManagerMap::begin(); it != sqliteManagerMap::end(); ++it)
                    {
                    delete it;
                    }
                    
                    

                    or what i need to write to deallocate memory ?

                    jsulmJ KroMignonK 2 Replies Last reply
                    0
                    • Q Qt embedded developer

                      @KroMignon Here inside for loop i need to write

                      for(std::map<int,SqliteManagerBGSync*>::iterator it = sqliteManagerMap::begin(); it != sqliteManagerMap::end(); ++it)
                      {
                      delete it;
                      }
                      
                      

                      or what i need to write to deallocate memory ?

                      jsulmJ Offline
                      jsulmJ Offline
                      jsulm
                      Lifetime Qt Champion
                      wrote on last edited by
                      #30

                      @Qt-embedded-developer said in Deallocate memory to singleton class which access database ?:

                      delete it;

                      delete it->second;

                      of course

                      https://forum.qt.io/topic/113070/qt-code-of-conduct

                      1 Reply Last reply
                      1
                      • Q Qt embedded developer

                        @KroMignon Here inside for loop i need to write

                        for(std::map<int,SqliteManagerBGSync*>::iterator it = sqliteManagerMap::begin(); it != sqliteManagerMap::end(); ++it)
                        {
                        delete it;
                        }
                        
                        

                        or what i need to write to deallocate memory ?

                        KroMignonK Offline
                        KroMignonK Offline
                        KroMignon
                        wrote on last edited by KroMignon
                        #31

                        @Qt-embedded-developer said in Deallocate memory to singleton class which access database ?:

                        or what i need to write to deallocate ?

                        Please, take time to read std::map<> documentation.
                        You are using a map iterator, so it is a container object which gives you access to key and value.

                        delete it do not make sense!

                        You want to delete the pointer hold in the value part: delete it->second

                        It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

                        Q 1 Reply Last reply
                        3
                        • KroMignonK KroMignon

                          @Qt-embedded-developer said in Deallocate memory to singleton class which access database ?:

                          or what i need to write to deallocate ?

                          Please, take time to read std::map<> documentation.
                          You are using a map iterator, so it is a container object which gives you access to key and value.

                          delete it do not make sense!

                          You want to delete the pointer hold in the value part: delete it->second

                          Q Offline
                          Q Offline
                          Qt embedded developer
                          wrote on last edited by Qt embedded developer
                          #32
                          This post is deleted!
                          1 Reply Last reply
                          0
                          • KroMignonK KroMignon

                            @Qt-embedded-developer said in Deallocate memory to singleton class which access database ?:

                            i can not enable it like that because any change like that not allowed in my device.

                            As @jsulm already wrote before, replace auto with the corresponding type:

                            for(std::map<int,SqliteManagerBGSync*>::iterator it = sqliteManagerMap::begin(); it != sqliteManagerMap::end(); ++it)
                            {
                            ...
                            }
                            
                            Q Offline
                            Q Offline
                            Qt embedded developer
                            wrote on last edited by
                            #33

                            @KroMignon Hi when i put sqliteManagerMap::begin() and sqliteManagerMap::end() i am getting error .

                            like below :

                            for(std::map<int,SqliteManagerBGSync *>::iterator it = sqliteManagerMap::begin(); it != sqliteManagerMap::end(); ++it)

                            but when i put sqliteManagerMap.begin() then i am getting no error.

                            jsulmJ KroMignonK 2 Replies Last reply
                            0
                            • Q Qt embedded developer

                              @KroMignon Hi when i put sqliteManagerMap::begin() and sqliteManagerMap::end() i am getting error .

                              like below :

                              for(std::map<int,SqliteManagerBGSync *>::iterator it = sqliteManagerMap::begin(); it != sqliteManagerMap::end(); ++it)

                              but when i put sqliteManagerMap.begin() then i am getting no error.

                              jsulmJ Offline
                              jsulmJ Offline
                              jsulm
                              Lifetime Qt Champion
                              wrote on last edited by
                              #34

                              @Qt-embedded-developer said in Deallocate memory to singleton class which access database ?:

                              sqliteManagerMap::begin() and sqliteManagerMap::end()

                              As already explained in your other thread: begin() and end() are non-static methods, so you call them with . not :: !
                              Please learn C++ and read documentation!

                              https://forum.qt.io/topic/113070/qt-code-of-conduct

                              1 Reply Last reply
                              1
                              • Q Qt embedded developer

                                @KroMignon Hi when i put sqliteManagerMap::begin() and sqliteManagerMap::end() i am getting error .

                                like below :

                                for(std::map<int,SqliteManagerBGSync *>::iterator it = sqliteManagerMap::begin(); it != sqliteManagerMap::end(); ++it)

                                but when i put sqliteManagerMap.begin() then i am getting no error.

                                KroMignonK Offline
                                KroMignonK Offline
                                KroMignon
                                wrote on last edited by
                                #35

                                @Qt-embedded-developer said in Deallocate memory to singleton class which access database ?:

                                for(std::map<int,SqliteManagerBGSync *>::iterator it = sqliteManagerMap::begin(); it != sqliteManagerMap::end(); ++it)

                                Sorry my fault, as @jsulm already told, this are not static class methods. You want to call class instance methode:

                                for(std::map<int,SqliteManagerBGSync *>::iterator it = sqliteManagerMap.begin(); it != sqliteManagerMap.end(); ++it)
                                

                                Was a long day yesterday!

                                It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

                                1 Reply Last reply
                                1

                                • Login

                                • Login or register to search.
                                • First post
                                  Last post
                                0
                                • Categories
                                • Recent
                                • Tags
                                • Popular
                                • Users
                                • Groups
                                • Search
                                • Get Qt Extensions
                                • Unsolved