Oi João! Tudo bem?
Quando você declara uma variável dentro de uma função, ela é alocada na stack, e o espaço de memória que ela ocupa é liberado assim que a função termina. Isso significa que, se você tentar acessar o ponteiro dessa variável a partir de outra função, após a função original ter sido encerrada, você pode acabar acessando um endereço de memória que não é mais válido, o que pode causar comportamentos inesperados ou erros.
Para evitar esse problema, uma solução é alocar a memória na heap, que é uma área de memória que permanece válida até que você explicitamente libere o espaço. Você pode fazer isso usando o operador new
em C++. Aqui está um exemplo prático:
#include <iostream>
int* criarVariavelNaHeap() {
int* ptr = new int; // aloca memória na heap
*ptr = 5; // atribui um valor
return ptr; // retorna o ponteiro
}
void outraFuncao(int* ptr) {
std::cout << "Valor: " << *ptr << std::endl; // acessa o valor na heap
}
int main() {
int* ponteiro = criarVariavelNaHeap();
outraFuncao(ponteiro);
delete ponteiro; // libera a memória alocada na heap
return 0;
}
Neste exemplo, a variável é alocada na heap dentro da função criarVariavelNaHeap
, e o ponteiro para essa memória é retornado e pode ser usado em outras funções sem problemas. Lembre-se de sempre liberar a memória alocada na heap usando delete
para evitar vazamentos de memória.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.