У меня есть следующий кодЛокальная переменная структура не получает уничтожены после возвращения из метода
#include <iostream>
struct mystruct
{
float x;
};
void fun(mystruct* ptr)
{
mystruct str = {10};
ptr = &str;
std::cout<<"bbq";
}
class cls
{
public:
mystruct* ptr;
void fun()
{
mystruct str = {10};
ptr = &str;
std::cout<<"bbq";
}
};
int main()
{
mystruct* ptr = new mystruct;
fun(ptr);
std::cout<<"bbq";
cls obj;
obj.fun();
std::cout<<"bbq";
}
На первый указатель PTR установлен в функции забавой адрес локальной структуры. Когда функция возвращает локальную структуру, она разрушается, как ожидалось.
Но тогда есть метод в классе, который делает то же самое с указателем-членом, но после возвращения метода и возврата обратно в указатель основного элемента все еще установлен. Не уничтожаются ли локальные переменные метода после возврата метода?
«Не уничтожаются ли локальные переменные метода после возврата метода?» Да, они. – juanchopanza
[undefined behavior] (http://stackoverflow.com/questions/6441218/can-a-local-variables-memory-be-accessed-outside-its-scope) – chris
Что вы видите и что вы ожидаете увидеть ? –