Я пытаюсь передать пустой указатель структуры в функцию с именем «инициализировать» в качестве выходного параметра, а затем, после завершения функции, я могу получить объект, на который указывает указатель структуры. Происходит некоторое неожиданное поведение, и я не совсем понимаю.
Ниже мой код:
static void initialize(complex_struct*& infoPtr)
{
complex_struct myInfo;
infoPtr = &myInfo;
// some other codes that modify the contents of myInfo
infoPtr->input_components = 3;
}
static void myfunction()
{
complex_struct* infoPtr = nullptr;
initialize(infoPtr);
std::cout << infoPtr->input_components << std::endl;
}
Результатом этого является произвольное большое целое число. Но я ожидал, что будет напечатано целое число 3.
Ограничения: я не могу изменять complex_struct; это структура Third_Party, которую необходимо использовать. Кроме того, причина, по которой мне нужно, чтобы initialize() была отдельной функцией, заключается в том, что я выполняю измерение производительности при выделении памяти для complex_struct. Поэтому перемещение первой строки кода в initialize() в myfunction() не является идеальным решением.