Hi, I made another project (currently for x86 platform) to make sure it is unmanaged. Unfortunately, the problem still arises, although I cannot see anything suspicious. Any other idea? I'm using the 3.4.2 binaries from your site, so both msvcr90d.dll and msvcr100d.dll are currently loaded.
Thanks for any suggestion, Alexander Von: Christian Schulte [mailto:[email protected]] Gesendet: Donnerstag, 20. Januar 2011 09:03 An: 'Mikael Zayenz Lagerkvist'; Alexander Kleff Cc: [email protected] Betreff: RE: [gecode-users] Crash while freeing memory in connection with VS2010 Please, also let us know which platform (x86 versus x64) and whether you use the binaries we distribute or have build them yourselves (then we need to know whether you built with 2008 or 2010) Thanks Christian -- Christian Schulte, www.ict.kth.se/~cschulte/ From: [email protected] [mailto:[email protected]] On Behalf Of Mikael Zayenz Lagerkvist Sent: Wednesday, January 19, 2011 8:46 PM To: Alexander Kleff Cc: [email protected] Subject: Re: [gecode-users] Crash while freeing memory in connection with VS2010 Hi, You seem to be using managed C++. Have you tried running your program with standard C++? The different memory policy might be a source of problems. I don't have a Windows machine to test on, so I haven't tried your program myself. Cheers, Mikael 2011/1/19 Alexander Kleff <[email protected]<mailto:[email protected]>> Hi once again, the code below compiles and links in both versions (so I assume I did not make an all too obvious modeling mistake) but it crashes in VS2010 in contrast to VS2008(Express). The error seems to occur during the destruction of the linear expression. The debugger sets the break point to Heap::rfree(void* p) in heap.hpp in all three cases. Can you reproduce it? Thanks for help, Alexander #include <gecode/minimodel.hh> using namespace Gecode; class GecodeTest : public Space { public: GecodeTest(void) { IntVar z(*this, 0, 1); IntVar e1 = expr(*this, 1 * z); IntVar e2 = expr(*this, z); // error 1 IntArgs cost(2); for (int v=0; v<2; ++v) { cost[v] = v; } LinExpr xy = element(cost, z); IntVar e3 = expr(*this, xy); IntVar e4 = expr(*this, element(cost, z)); // error 2 } // error 3 (in destructor) GecodeTest(bool share, GecodeTest& s) : Space(share, s) {} virtual Space* copy(bool share) { return new GecodeTest(share,*this); } }; // main function int main(array<System::String ^> ^args) { GecodeTest* m = new GecodeTest; delete m; return 0; } _______________________________________________ Gecode users mailing list [email protected]<mailto:[email protected]> https://www.gecode.org/mailman/listinfo/gecode-users -- Mikael Zayenz Lagerkvist, http://www.ict.kth.se/~zayenz/
_______________________________________________ Gecode users mailing list [email protected] https://www.gecode.org/mailman/listinfo/gecode-users
