Как сохранить значение в массиве указателей
Есть приблизительно такой-же код
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++...