Normalmente Gestión de memoria se utiliza en el contexto de la memoria dinámica que se crea por
new
malloc
En el código C++ normales se comporta como cualquier otro idioma. Si crea una variable o la devuelve, se copia y se puede acceder desde el lado de destino.
int a = addTwo(3);
obtiene una copia del valor devuelto. Si el valor devuelto es un operador de copia de clase llamado. Así que mientras no trabajes con new y malloc no tienes que preocuparte tanto por la administración de la memoria.
Una observación adicional que es importante
void func(std::string abc)
{
// method gets a copy of abc
}
void func(std::string& abc)
{
// method gets the original string object which can be modified without having to return it
}
void func(const std::string& abc)
{
// method gets the original string object abc but is not able to modify it
}
La diferencia de las tres líneas es muy importante debido a que su programa puede ahorrar mucho tiempo la creación de copias de los parámetros de entrada que normalmente no desea crear.
p. Ej.
bool CmpString(std::string a, std::string b)
{
return a.compare(b);
}
es muy caro porque las cuerdas a y b siempre se copian. Utilice
bool CmpString(const std::string& a, const std::string& b)
en su lugar.
Esto es importante porque no se utilizan objetos refconados por defecto.
Reetiquetado como 'C' porque no hay C++ aquí, como lo señala alguien más a continuación. – ChrisInEdmonton
Tetagged como C++, porque esta es definitivamente una pregunta de C++, y el interrogador pregunta explícitamente sobre C++. –
OP, no es necesario que acepte ninguna de las respuestas. –