Questão
Qual das alternativas a seguir mostra um trecho de código que apresenta um vazamento de memória, situação em que perdemos acesso a uma região de memória, mas não a desalocamos?
A) ``` bool *verdade = new bool; *verdade = true; bool *mentira = new bool; *mentira = false; *verdade = !*mentira;
B) ```
int *ourNumber = new int;
*ourNumber = 45;
int *myNumber = new int;
*myNumber = 13;
*myNumber = *ourNumber;
C) ``` char *ourCode = new char; *ourCode = 'a'; char *myCode = new char; *myCode = 'b'; myCode = ourCode;
D) ```
string *ourNome = new string;
*ourNome = "pedro";
string *myNome = new string;
*myNome = "paulo";
*myNome = *ourNome;
E) ``` float *ourMoney = new float; *ourMoney = 949.3; float *myMoney = new float; *myMoney = 13.4; *myMoney = *ourMoney;
C
A alternativa C apresenta um vazamento de memória. Quando myCode
é atribuído a ourCode
, o ponteiro original myCode
perde a referência à memória alocada inicialmente com new char
, resultando em um vazamento de memória, pois essa memória não é desalocada antes da atribuição.