This forum has been archived. All content is frozen. Please use KDE Discuss instead.

It seems like memory problem in Eigen

Tags: None
(comma "," separated)
wenluyang
Registered Member
Posts
5
Karma
0
Hi,
I use Eigen to build my numerical computation program but meet some problems which are hard to understand and solve.
As so far, I have collected two problems.

First problem is associated with VectorXd. There is a huge loop in my program.
The program will crash in ternary cycle and compiler give me 'Aborted' message, the following pictures describe detail of this problem.

http://miupix.cc/pm-DLTMK3
PS: This is one of my functions and each cycle will call this function.

http://miupix.cc/pm-LUO3YX

Second problem seems to be associated with " = ".
Here is a derived class which has a member derived from base class.
Code: Select all
MatrixXd Coor


In every cycle, some value will be set to this variable one by one via class pointer.
Code: Select all
LoadingTractBase * cp_LoadingTractBase = NULL;

    if(!(cp_LoadingTractBase = new LoadingTractBase))
    {
        cout << "Error,indicator does not call right memory" << endl;
        abort();
    }
cp_LoadingTractBase->Coor = VALUE;    // error position.
                                                                 


but in ternary cycle, the program will crash after some assignments.
To my surprised, the problem seems to be associated with the operator “=”,just like the following pictures.
http://miupix.cc/pm-LI20DB

http://miupix.cc/pm-F5QUCT

http://miupix.cc/pm-JLBGNI

Can someone help me with this problems?
Thanks.

PS: English is not my mother tongue, so some sentences may seem to be broken and some words may
seem to hard to understand. Please forgive me about it.
User avatar
ggael
Moderator
Posts
3447
Karma
19
OS
Regarding the first issue, there is something weird, as the backtrace is showing that the destructor of VectorXd is called, whereas the line 7668 corresponds to a call to the default constructor... Are you running in full debug mode? The second one is failing within std::malloc itself. My guess is that you have a memory issue within your own code that triggers random and weird error elsewhere. To find it, the best is to run your program within a memory debugger like valgrind for Linux/OSX. For windows there is vtune, but there probably exist other tools.


Bookmarks



Who is online

Registered users: bartoloni, Bing [Bot], Evergrowing, Google [Bot], ourcraft