Message-Id: <3.0.16.19971103155255.384f8828@hem1.passagen.se> Date: Mon, 03 Nov 1997 15:53:36 -0500 To: djgpp AT delorie DOT com From: Peter Palotas Subject: Writing to a file from dtor doesn't work! Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Precedence: bulk Take a look at the following tiny bit of code: #include class A { private: FILE *fl; public: A(void) { fl = fopen("test.log", "wt"); fprintf(fl, "In A constructor\n"); } ~A(void) { fprintf(fl, "In A destructor\n"); fclose(fl); } }; A a; int main(void) { return 0; } Okay, now everyone probably sees what this should do. It should write the two lines "In A constructor" and "In A destructor" to the file "test.log" (provided that it successfully can open the file, but since this is only a test program, I don't bother checking that. Well, the problem is that if you declare an object of 'A' at global scope, like I did in this example, nothing gets written in the destructor! i.e. the file only contains one line; "In A constructor". Declaring 'a' (an object of 'A') inside main() however makes everything work as it's supposed to. (Reopening the file in the destructor also works fine, so it seems as if the file is closed before we reach the destructor or something?) Now is this a bug, or is it normal behaviour? Becuase it doesn't seem normal to me, and I haven't found any documentation on it either, so any help solving this would be appreciated. -- Peter Palotas alias Blizzar -- blizzar AT hem1 DOT passagen DOT se -- ***************************************************** * A brief description of DJGPP: * * NEVER BEFORE HAS SO FEW DONE SO MUCH FOR SO MANY! * *****************************************************