Как сохранить значение в массиве указателей

Есть приблизительно такой-же код

struct TestStruct
{
    int** massive = nullptr;
    int count = 0;
    void AddMassive(int value)
    {
        massive = (int**)malloc(sizeof(int) * 1);
        massive[count++] = value;
    }
};

void func(TestStruct test)
{
    int random = rand() % 30;
    test.AddMassive(random);

}

int main()
{
    srand(time(0));
    TestStruct test;
    func(test);
    return 0;

}

Проблема в том что когда функция func завершаеться то massive в структуре test становиться пустой. Вопрос как сделать так что-бы даже в main в тест осталость значение random?


Ответы (1 шт):

Автор решения: Harry

Вероятно, вы хотели чего-то такого?

struct TestStruct
{
    int* massive = nullptr;
    int count = 0;
    void AddMassive(int value)
    {
        massive = (int*)malloc(sizeof(int*) * 1);
        massive[count++] = value;
    }
};

void func(TestStruct& test)
{
    int random = rand() % 30;
    test.AddMassive(random);

}

int main()
{
    srand(time(0));
    TestStruct test;
    func(test);
    cout << *test.massive;
}

Но этот код, скажем очень мягко, далек от совершенства... Утечка памяти, невозможность добавления хотя бы второго значения, применение malloc в C++...

→ Ссылка