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 7.1k 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.
  • 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