jeudi 31 octobre 2019

Object address suddenly changed

class test
{
    void thread1()
    {
        int i = 0;

        for(unsigned int k = 0;k < mLD.size(); k++ )
        {

            mLD[k] = i++;

        }
    }

    void thread2()
    {
        std::cout << "thread2 address  : " << &mLD << "\n";
        C();
    }


    void B()
    {
        std::cout << "B address  : " << &mLD << "\n";

        for(unsigned int k = 0;k < mLD.size(); k++ )
        {

            if(mLD[k]<=25)
            {

            }
        }
    }

    void C()
    {
        B();

        std::cout << "C address  : " << &mLD << "\n";

        double distance = mLD[0];  //  <---- segmetation fault

    }

    std::array<double, 360> mLD;
};

cout result --->

thread2 address : 0x7e807660

B address : 0x7e807660

C address : 0x1010160 (sometimes 0x7e807660 )

Why mLD's address changed ....?

even i change "std::array" to "std::array, 360>", the result is the same.

Aucun commentaire:

Enregistrer un commentaire