Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8178969
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 6, 20262026-06-06T23:53:45+00:00 2026-06-06T23:53:45+00:00

I have a private member std::list<MyClass*> myclass_list; which is part of OtherClass. When i

  • 0

I have a private member

std::list<MyClass*> myclass_list;

which is part of OtherClass.

When i close my console application, the empty Destructor of OtherClass is called. The problem is, that during the destructor call – some methods within OtherClass want to iterate over myclass_list – e.g.

for(std::list<MyClass*>::iterator it = myclass_list.begin(); it != myclass_list.end(); ++it) {      
    // do stuff
}

Now, even tho the myclass_list is empty (and was never assigned/added a single variable to it during its lifetime) – the for loop will iterate at least once – basically accessing non-existing MyClass objects.

All this goes away when i switch from std::list to std::vector.

  1. What is the issue with the STL (VS2010) of list here? How can i check for an invalid list (!= 0 or !vector doesnt work there is no overloaded operator).
  2. I gather it works fine for vector because it uses continous memory and therefor the loop never gets executed.

EDIT: Ok i think the issue might be with accessing an invalid Otherclass object which is currently, the destructor is called. Otherclass is a global object.

Workflow ~OtherClass -> delete someMemberObject -> ~someMemberObject -> otherclass->CheckMyClassList(someMemberObject) -> crash

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-06T23:53:47+00:00Added an answer on June 6, 2026 at 11:53 pm

    Destructors of member variables are called in the inverse order of declaration.

    So, if the destructor of any member variable needs to access to other member variable, then the used variable should be declared before:

    class OtherClass
    {
        std::list<MyClass*> myclass_list;
        someMemberObject member;
    };
    

    If the variables are defined in the opposite order, then when ~someMemberObject() is called, the myclass_list destructor would have been called, and any use of it would result in undefined behavior.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a class which has one private member: std::set<unsigned long> Sset; And I
I have a std::map which is a private member of a class. One of
let's say I have std::map< std::string, std::string > m_someMap as a private member variable
I have a list as a private member of a class that has two
Usually when you have a constant private member variable in your class, which only
I have a Poly3D class in C++, which has a sole member: list<Point_3> using
Hi I have some issue regarding constructor and destructor. I have list class, which
I have a class myclass that has a private member param_map class some_class {
In my class I have two private members: std::list<MyObject> objects; MyObject *selecteObj; When an
I have a class with a private member ( struct ) as follows: enum

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.