Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manejo Memoria
Manejo Memoria
En C
Sección del Memory Layout
Malloc ->Reserva
No es gestionado automáticamente
Calloc ->Reserva
El programador interactúa mediante:
Realloc ->Re-Asigna
Reservación de Memoria.(Allocate)
Free ->Libera
Liberación de Memoria.(Deallocate/Free)
Re-asignación de memoria.(Resize)
X -Más trabajo
-Mayor cantidad de errores
-Tiempo de Vida
-Restricción de comunicación
Permiten manipular la memoria.
Cuando declara una variable se asigna memoria a esa variable.
No almacena directamente el valor, lo apunta o referencia.
Un puntero almacena una referencia a otro valor.
Un puntero en C
int *age;
double *age;
char *age
<static> *;
void *;
Un puntero es usado para interactúa con variables en el Heap pero igual puede servir con el Stack.
& (Ampersand): Asigna un valor a un puntero (Operador de referencia).
* : Obtiene el valor de un puntero.
Sharing:
- Tener más de un puntero a un mismo espacio de memoria.
Counter 5
Counter_1 0X000A
Counter_2 0X000A
Shallow Copy Deep Copy
Copia la referencia Copia la referencia
pero no el dato. y también el dato.
counterPtr 0x00A 5
counterPtr 0x00A 5
counterPtr_2 0x00B 5
counterPtr_2 0x00B
Arreglos
0x900 vec[0]
0x901 vec[1]
0x902 vec[2]
Int vec[5] 0x903 vec[3]
0x904 vec[4]
0x905
0x906
Referencias:
-similar a punteros
-punteros usados en contextos de C/C++ y referencia en otros lenguajes
-usado en el contexto de paso de parámetros
C++ también permite referencias:
Ejemplo:
En java
public void javaShallow (){
Foo a = new Foo();
Foo b = new Foo();
a=b;
a.Bar();
}
Garbage Collector:
Posee 2 Fases:
1) Fase de marcado.
2) Fase de liberación.
Endianess
-Littler endian => (el byte menos significativo va al inicio de la secuencia) [1]
-Big endian => (el byte menos significativo va al final de la secuencia) [2]
Significativo
90 AB 12 CD
90 AB 12 CD [1]
CD 12 AB 90 [2]