Keep a variable in memory between program runs

In the c++ program that I am trying to write I would need to update a 2D array and then plot it (for plotting I have been using gnuplot) for a pretty big number of times. I would like, if possible, to avoid having a huge file in which I would write the matrix for every step of the evolution to plot everything afterwards.

My intention was to do a gnuplot script able to run the program to evolve the matrix once and then print it and then iterate. But to do so I would need to give to the program access to the matrix calculated in the prior step and I cannot figure out an efficient way to do it. Being able to keep the matrix in memory between runs and passing only a pointer from one step to the other seems fast but I do not know if it is possible.

Do you know if it is possible to keep a variable in memory between runs or do you have alternative suggestions?

Thanks.

2 answers

  • answered 2022-05-04 10:55 YScharf

    You can use a memory-mapped file.

    Boost provides for a cross-platform shared-memory file.

    Check out the documentation.

  • answered 2022-05-04 12:12 Tom Solid

    You should open Gnuplot inside your c++ program, and communicate with it using a FIFO as in this answer.

    After that, you can polt your array for example:

    std::stringstream ss;
    ss << "plot '-' nonuniform matrix with image\n";
    /*... filling ss with your array*/
    ss << "e\ne\n\n";
    fprintf(gp, ss.str().c_str());
    fflush(gp);
    

How many English words
do you know?
Test your English vocabulary size, and measure
how many words do you know
Online Test
Powered by Examplum