2024-03-15 00:05:50 +01:00
# PEC 2
**Índice**
- [PEC 2 ](#pec-2 )
- [4. Estructura de memoria ](#4-estructura-de-memoria )
- [4.1. Memoria ](#41-memoria )
- [4.1.1. Información y espacio ](#411-información-y-espacio )
- [4.2. Memoria estática ](#42-memoria-estática )
- [4.3 Relación entre objetos y memoria ](#43-relación-entre-objetos-y-memoria )
- [4.4. El tipo puntero en C ](#44-el-tipo-puntero-en-c )
- [4.4.1. Declaración ](#441-declaración )
- [4.4.2. Operaciones ](#442-operaciones )
- [4.4.2.1. Asignación ](#4421-asignación )
- [4.4.2.2. Contenido ](#4422-contenido )
## 4. Estructura de memoria
2024-03-17 11:24:28 +01:00
Conceptos básicos de los efectos que produce un programa en la memoria.
2024-03-15 00:05:50 +01:00
### 4.1. Memoria
2024-03-17 11:24:28 +01:00
Un programa no se ejecuta desde el disco, sino que se carga en la memoria RAM (Random Access Memory). La memoria es un recurso finito y limitado, por lo que es importante gestionarla de forma eficiente. Por este motivo, el SO se encarga de ir moviendo los programas entre la memoria y el disco, pero desde la vista del programador debemos entender que el programa siempre está cargado en memoria.
Cada posición está identificada unívocamente con un valor numérico (su dirección) y tiene capacidad de 8 bytes.
2024-03-15 00:05:50 +01:00
2024-03-17 11:24:28 +01:00
Cuando asignamos un valor (constante o variable) se asigna un rango de direcciones donde pondrá su valor.
2024-03-15 00:05:50 +01:00
#### 4.1.1. Información y espacio
2024-03-17 11:24:28 +01:00
< table >
< tr >
< th rowspan = "2" > Tipo< / th >
< th rowspan = "2" > Tipo C< / th >
2024-03-17 11:26:50 +01:00
< th rowspan = "2" > Tamaño en bytes< / th >
2024-03-17 11:24:28 +01:00
< th rowspan = "2" > Rango de valores< / th >
< / tr >
2024-03-17 11:29:09 +01:00
< tr > < / tr >
2024-03-17 11:24:28 +01:00
< tr >
< td > Entero< / td >
< td > char< / td >
< td > 1< / td >
< td > -128 to 127 o 0 to 255< / td >
< / tr >
< tr >
< td > Entero< / td >
< td > unsigned char< / td >
< td > 1< / td >
< td > 0 a 255< / td >
< / tr >
< tr >
< td > Entero< / td >
< td > signed char< / td >
< td > 1< / td >
< td > -128 a 127< / td >
< / tr >
< tr >
< td > Entero< / td >
< td > int< / td >
< td > 2 o 4< / td >
< td > -32,768 a 32,767 o -2,147,483,648 a 2,147,483,647< / td >
< / tr >
< tr >
< td > Entero< / td >
< td > unsigned int< / td >
< td > 2 o 4< / td >
< td > 0 a 65,535 o 0 a 4,294,967,295< / td >
< / tr >
< tr >
< td > Entero< / td >
< td > short< / td >
< td > 2< / td >
< td > -32,768 a 32,767< / td >
< / tr >
< tr >
< td > Entero< / td >
< td > unsigned short< / td >
< td > 2< / td >
< td > 0 a 65,535< / td >
< / tr >
< tr >
< td > Entero< / td >
< td > long< / td >
< td > 4< / td >
< td > -2,147,483,648 a 2,147,483,647< / td >
< / tr >
< tr >
< td > Entero< / td >
< td > unsigned long< / td >
< td > 4< / td >
< td > 0 a 4,294,967,295< / td >
< / tr >
< tr >
< td > Real< / td >
< td > float< / td >
< td > 4< / td >
< td > 1.2E-38 a 3.4E+38 -> 6 decimales< / td >
< / tr >
< tr >
< td > Real< / td >
< td > double< / td >
< td > 8< / td >
< td > 2.3E-308 a 1.7E+308 -> 15 decimales< / td >
< / tr >
< tr >
< td > Real< / td >
< td > long double< / td >
< td > 10< / td >
< td > 3.4E-4932 a 1.1E+4932 -> 19 decimales< / td >
< / tr >
< / table >
2024-03-15 00:05:50 +01:00
### 4.2. Memoria estática
### 4.3 Relación entre objetos y memoria
### 4.4. El tipo puntero en C
#### 4.4.1. Declaración
#### 4.4.2. Operaciones
##### 4.4.2.1. Asignación
##### 4.4.2.2. Contenido