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 6.0k 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.
  • jsulmJ jsulm

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

    SqliteManagerBGSync::cleanup()

    C++ basics: return type is missing...

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

    @jsulm hi jsulm i am returning nothing. my return type is void.

    jsulmJ 1 Reply Last reply
    0
    • Q Qt embedded developer

      @jsulm hi jsulm i am returning nothing. my return type is void.

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

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

      my return type is void.

      Then write void there. Come on this is really basic stuff...

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

      Q 1 Reply Last reply
      1
      • jsulmJ jsulm

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

        my return type is void.

        Then write void there. Come on this is really basic stuff...

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

        @jsulm Okay thanks. but still i am getting below errors:

        "src\SqliteManagerBGSync.cpp", line 27: Error: #260-D: explicit type is missing ("int" assumed)
        for (const auto& kv : sqliteManagerMap) {
        ^
        "src\SqliteManagerBGSync.cpp", line 27: Error: #252: reference variable "kv" requires an initializer
        for (const auto& kv : sqliteManagerMap) {
        ^
        "src\SqliteManagerBGSync.cpp", line 27: Error: #65: expected a ";"
        for (const auto& kv : sqliteManagerMap) {
        ^
        "src\SqliteManagerBGSync.cpp", line 27: Error: #29: expected an expression
        for (const auto& kv : sqliteManagerMap) {
        ^
        "src\SqliteManagerBGSync.cpp", line 27: Error: #65: expected a ";"
        for (const auto& kv : sqliteManagerMap) {
        ^
        "src\SqliteManagerBGSync.cpp", line 28: Error: #153: expression must have class type
        delete kv.second;

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

          @jsulm Okay thanks. but still i am getting below errors:

          "src\SqliteManagerBGSync.cpp", line 27: Error: #260-D: explicit type is missing ("int" assumed)
          for (const auto& kv : sqliteManagerMap) {
          ^
          "src\SqliteManagerBGSync.cpp", line 27: Error: #252: reference variable "kv" requires an initializer
          for (const auto& kv : sqliteManagerMap) {
          ^
          "src\SqliteManagerBGSync.cpp", line 27: Error: #65: expected a ";"
          for (const auto& kv : sqliteManagerMap) {
          ^
          "src\SqliteManagerBGSync.cpp", line 27: Error: #29: expected an expression
          for (const auto& kv : sqliteManagerMap) {
          ^
          "src\SqliteManagerBGSync.cpp", line 27: Error: #65: expected a ";"
          for (const auto& kv : sqliteManagerMap) {
          ^
          "src\SqliteManagerBGSync.cpp", line 28: Error: #153: expression must have class type
          delete kv.second;

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

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

          Okay thanks. but still i am getting below errors:

          Do your compiler support C++11 and did you enable C++11 support (eg. add CONFIG += c++11 in your PRO file)?

          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
          2
          • KroMignonK KroMignon

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

            Okay thanks. but still i am getting below errors:

            Do your compiler support C++11 and did you enable C++11 support (eg. add CONFIG += c++11 in your PRO file)?

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

            @KroMignon Hi i am not using qt . and sorry i can not enable C++ 11 because my compiler not support it. i can access map like std::map .

            KroMignonK 1 Reply Last reply
            0
            • Q Qt embedded developer

              @jsulm Okay thanks. but still i am getting below errors:

              "src\SqliteManagerBGSync.cpp", line 27: Error: #260-D: explicit type is missing ("int" assumed)
              for (const auto& kv : sqliteManagerMap) {
              ^
              "src\SqliteManagerBGSync.cpp", line 27: Error: #252: reference variable "kv" requires an initializer
              for (const auto& kv : sqliteManagerMap) {
              ^
              "src\SqliteManagerBGSync.cpp", line 27: Error: #65: expected a ";"
              for (const auto& kv : sqliteManagerMap) {
              ^
              "src\SqliteManagerBGSync.cpp", line 27: Error: #29: expected an expression
              for (const auto& kv : sqliteManagerMap) {
              ^
              "src\SqliteManagerBGSync.cpp", line 27: Error: #65: expected a ";"
              for (const auto& kv : sqliteManagerMap) {
              ^
              "src\SqliteManagerBGSync.cpp", line 28: Error: #153: expression must have class type
              delete kv.second;

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

              @Qt-embedded-developer

              SqliteManagerBGSync();
              cleanup();
              

              both are missing the return type, and also make sure to fix them in the *.cpp file as well!


              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
              0
              • J.HilkJ J.Hilk

                @Qt-embedded-developer

                SqliteManagerBGSync();
                cleanup();
                

                both are missing the return type, and also make sure to fix them in the *.cpp file as well!

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

                @J-Hilk i have changed it . i have used void, But still i am getting as below mentioned error:

                "src\SqliteManagerBGSync.cpp", line 27: Error: #260-D: explicit type is missing ("int" assumed)
                for (const auto& kv : sqliteManagerMap) {
                ^
                "src\SqliteManagerBGSync.cpp", line 27: Error: #252: reference variable "kv" requires an initializer
                for (const auto& kv : sqliteManagerMap) {
                ^
                "src\SqliteManagerBGSync.cpp", line 27: Error: #65: expected a ";"
                for (const auto& kv : sqliteManagerMap) {
                ^
                "src\SqliteManagerBGSync.cpp", line 27: Error: #29: expected an expression
                for (const auto& kv : sqliteManagerMap) {
                ^
                "src\SqliteManagerBGSync.cpp", line 27: Error: #65: expected a ";"
                for (const auto& kv : sqliteManagerMap) {
                ^
                "src\SqliteManagerBGSync.cpp", line 28: Error: #153: expression must have class type
                delete kv.second;

                jsulmJ 1 Reply Last reply
                0
                • Q Qt embedded developer

                  @J-Hilk i have changed it . i have used void, But still i am getting as below mentioned error:

                  "src\SqliteManagerBGSync.cpp", line 27: Error: #260-D: explicit type is missing ("int" assumed)
                  for (const auto& kv : sqliteManagerMap) {
                  ^
                  "src\SqliteManagerBGSync.cpp", line 27: Error: #252: reference variable "kv" requires an initializer
                  for (const auto& kv : sqliteManagerMap) {
                  ^
                  "src\SqliteManagerBGSync.cpp", line 27: Error: #65: expected a ";"
                  for (const auto& kv : sqliteManagerMap) {
                  ^
                  "src\SqliteManagerBGSync.cpp", line 27: Error: #29: expected an expression
                  for (const auto& kv : sqliteManagerMap) {
                  ^
                  "src\SqliteManagerBGSync.cpp", line 27: Error: #65: expected a ";"
                  for (const auto& kv : sqliteManagerMap) {
                  ^
                  "src\SqliteManagerBGSync.cpp", line 28: Error: #153: expression must have class type
                  delete kv.second;

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

                  @Qt-embedded-developer As @KroMignon already asked you: do you have a C++11 capable compiler? And is C++11 activated?

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

                  Q 1 Reply Last reply
                  1
                  • jsulmJ jsulm

                    @Qt-embedded-developer As @KroMignon already asked you: do you have a C++11 capable compiler? And is C++11 activated?

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

                    @jsulm no i have not. So what i have to change in below function:

                    SqliteManagerBGSync::cleanup()
                    {
                    for (const auto& kv : sqliteManagerMap) {
                        delete kv.second;
                    }
                    sqliteManagerMap.clear();
                    
                    }
                    
                    jsulmJ 1 Reply Last reply
                    0
                    • Q Qt embedded developer

                      @KroMignon Hi i am not using qt . and sorry i can not enable C++ 11 because my compiler not support it. i can access map like std::map .

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

                      @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

                      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
                      • Q Qt embedded developer

                        @jsulm no i have not. So what i have to change in below function:

                        SqliteManagerBGSync::cleanup()
                        {
                        for (const auto& kv : sqliteManagerMap) {
                            delete kv.second;
                        }
                        sqliteManagerMap.clear();
                        
                        }
                        
                        jsulmJ Offline
                        jsulmJ Offline
                        jsulm
                        Lifetime Qt Champion
                        wrote on last edited by
                        #20

                        @Qt-embedded-developer Then you can't use auto, write the type instead of auto

                        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 ?:

                          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

                                          • Login

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