Week 4 - Lecture (Memory) Flashcards

(65 cards)

1
Q

¿Qué representa un píxel en una pantalla de computadora?

A

Es un punto individual de color que, junto con otros, forma una imagen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

¿Cuál es la función del sistema RGB en la representación de colores?

A

Representar colores mediante la combinación de intensidades de rojo (Red), verde (Green) y azul (Blue).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

En el sistema hexadecimal, ¿qué base numérica se utiliza?

A

Se utiliza la base 16.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

¿Cuáles son los 16 dígitos disponibles en el sistema hexadecimal?

A

Los números del 0 al 9 y las letras de la A a la F.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

¿Qué valor decimal representa la letra $F$ en hexadecimal?

A

Representa el valor decimal 15.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

¿Cuántos bits se pueden representar exactamente con un solo dígito hexadecimal?

A

Se pueden representar 4 bits.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

¿Por qué es conveniente usar dos dígitos hexadecimales para representar un byte?

A

Porque cada dígito representa 4 bits, sumando los 8 bits que conforman un byte.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

¿Qué valor decimal equivale al número hexadecimal $0xFF$?

A

Equivale al valor decimal 255.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

¿Cuál es el prefijo estándar utilizado en C para denotar un número en base hexadecimal?

A

El prefijo $0x$.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Definición: Puntero (Pointer)

A

Es una variable que almacena la dirección de memoria de otro valor.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

¿Qué operación realiza el operador ampersand ($\&$) al anteponerse a una variable?

A

Obtiene la dirección de memoria de esa variable.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

¿Cuál es la función del operador asterisco ($*$) cuando se usa en la declaración de una variable (ej. $int *p$)?

A

Indica que la variable almacenará la dirección de memoria de un tipo de dato específico.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

¿Qué hace el operador de desreferencia ($*$) cuando se aplica a un puntero existente?

A

Indica a la computadora que vaya a la dirección almacenada en el puntero para acceder a su valor.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

¿Cuántos bytes ocupa generalmente un puntero en un sistema moderno de 64 bits?

A

Ocupa 8 bytes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

En C, ¿qué es técnicamente un string?

A

Es un puntero al primer carácter de una secuencia de caracteres en memoria ($char *$).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

¿Cuál es el propósito del carácter nulo ($\0$) al final de un string en C?

A

Indicar el final de la secuencia de caracteres en la memoria.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

¿Por qué se utiliza el formato $\%p$ en la función $printf$?

A

Para imprimir una dirección de memoria en formato hexadecimal.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

¿Qué sucede realmente al declarar $string s = “HI!”$ usando la biblioteca CS50?

A

Se crea un puntero de tipo $char *$ que apunta a la dirección de la letra ‘H’.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

¿Qué permite hacer la palabra clave $typedef$ en C?

A

Permite crear alias o sinónimos para tipos de datos existentes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Concepto: Aritmética de punteros

A

Es la capacidad de sumar o restar valores a una dirección de memoria para navegar por datos contiguos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Si $s$ es un puntero a un string, ¿a qué carácter apunta la expresión $*(s + 1)$?

A

Apunta al segundo carácter del string.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

En C, la notación de corchetes $s[i]$ es “azúcar sintáctica” para la expresión de punteros _____.

A

*(s + i)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

¿Por qué el operador $==$ no compara correctamente el contenido de dos strings en C?

A

Porque compara las direcciones de memoria de los punteros en lugar de los caracteres individuales.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

¿Qué función de la biblioteca $string.h$ se debe usar para comparar el contenido de dos strings?

A

$strcmp$

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
¿Qué ocurre al intentar copiar un string mediante la asignación $t = s$?
Se copia la dirección de memoria, haciendo que ambos punteros apunten al mismo string (copia superficial).
26
¿Cuál es el propósito de la función $malloc$?
Asignar dinámicamente un bloque de memoria de un tamaño específico durante la ejecución.
27
¿Qué función debe usarse para liberar la memoria solicitada previamente con $malloc$?
$free$
28
¿Qué es un "memory leak" (fuga de memoria)?
Es el fallo en liberar memoria asignada dinámicamente que ya no se necesita.
29
¿Qué valor especial devuelve $malloc$ si no hay suficiente memoria disponible?
Devuelve el valor $NULL$.
30
¿Cuál es la diferencia entre el carácter nulo ($\0$) y el puntero $NULL$?
$\0$ es un carácter de un byte con valor cero; $NULL$ es una dirección de memoria especial ($0x0$).
31
¿Qué herramienta se utiliza comúnmente para detectar fugas de memoria y errores de acceso?
$Valgrind$
32
¿A qué se refiere el término "garbage value" (valor basura)?
A los datos desconocidos o remanentes que existen en una dirección de memoria que no ha sido inicializada.
33
¿Cómo se llama el error que ocurre al intentar acceder a un índice fuera de los límites de un array o buffer?
Buffer overflow (desbordamiento de búfer).
34
¿En qué sección de la memoria se almacenan los datos asignados mediante $malloc$?
En el Heap (montículo).
35
¿En qué sección de la memoria se almacenan las variables locales y los marcos de llamadas a funciones?
En el Stack (pila).
36
¿Qué dirección de crecimiento suelen tener el Heap y el Stack en el modelo de memoria típico?
Crecen en direcciones opuestas (el Heap hacia abajo y el Stack hacia arriba).
37
¿Qué significa "pasar por valor" al llamar a una función?
Significa que la función recibe una copia local de los datos originales, sin poder modificarlos directamente.
38
¿Qué significa "pasar por referencia" usando punteros?
Significa pasar la dirección de una variable para que la función pueda modificar el valor original en memoria.
39
¿Qué función de $stdio.h$ permite leer la entrada del usuario directamente hacia una dirección de memoria?
$scanf$
40
¿Por qué $scanf$ requiere el uso del operador $\&$ para leer un entero (ej. $scanf("\%i", \&n)$)?
Para conocer la dirección exacta donde debe depositar el valor ingresado por el usuario.
41
¿Qué representa el tipo de dato $FILE *$ en C?
Un puntero a una estructura que representa un archivo abierto.
42
¿Cuál es la función encargada de abrir archivos en C?
$fopen$
43
En $fopen$, ¿qué indica el modo "r"?
Indica que el archivo se abrirá en modo de lectura (read).
44
En $fopen$, ¿qué indica el modo "w"?
Indica que el archivo se abrirá en modo de escritura (write), sobrescribiendo el contenido existente.
45
En $fopen$, ¿qué indica el modo "a"?
Indica que el archivo se abrirá en modo de anexar (append), añadiendo datos al final.
46
¿Qué función se utiliza para cerrar un archivo y asegurar que los datos se guarden correctamente?
$fclose$
47
¿Cuál es la versión de $printf$ que permite escribir datos directamente en un archivo?
$fprintf$
48
¿Qué es un archivo CSV?
Es un archivo de valores separados por comas, usado frecuentemente para representar datos tabulares.
49
¿Qué función se utiliza para leer bloques de datos binarios desde un archivo?
$fread$
50
¿Qué función se utiliza para escribir bloques de datos binarios hacia un archivo?
$fwrite$
51
¿Cuál es la unidad mínima de almacenamiento que suele manipularse en archivos binarios (como imágenes)?
El byte.
52
¿Qué operador de C permite determinar el tamaño en bytes de un tipo de dato o variable?
$sizeof$
53
¿Por qué es importante liberar la memoria con $free$ en programas que se ejecutan por mucho tiempo?
Para evitar que el sistema se quede sin memoria disponible para otros procesos.
54
¿Qué sucede durante un "Stack Overflow"?
El stack crece tanto por demasiadas llamadas a funciones (como recursión infinita) que sobrepasa su límite de memoria.
55
¿A qué dirección apunta típicamente un puntero que no ha sido inicializado?
A una dirección arbitraria (basura) que puede causar errores si se desreferencia.
56
¿Qué biblioteca de C contiene las definiciones de $malloc$ y $free$?
$stdlib.h$
57
¿Cuál es la función de la biblioteca $string.h$ usada para copiar un string a otro bloque de memoria?
$strcpy$
58
¿Por qué se usa el tipo $unsigned\ char$ para representar bytes de datos crudos?
Para asegurar que los valores de 8 bits se traten como números positivos entre 0 y 255.
59
Si una imagen tiene una resolución de $100 \times 100$ píxeles y usa 24 bits por color, ¿cuántos bytes ocupa aproximadamente cada píxel?
Ocupa 3 bytes (uno para R, uno para G y uno para B).
60
¿Qué sucede con la memoria del Stack cuando una función termina su ejecución?
El marco de memoria de esa función se marca como disponible para ser reutilizado por la siguiente llamada.
61
¿Cómo se llama la dirección de memoria $0x0$?
Dirección NULL.
62
¿Cuál es el riesgo de usar $scanf$ para leer strings sin especificar un límite de caracteres?
Existe el riesgo de un buffer overflow si el usuario ingresa más caracteres de los reservados.
63
En el contexto de imágenes, ¿qué es un filtro de detección de bordes?
Es un algoritmo que identifica cambios bruscos en los colores para resaltar las siluetas de los objetos.
64
¿Qué función devuelve la longitud de un string sin contar el carácter nulo?
$strlen$
65
¿Qué significa que la memoria RAM sea "volátil"?
Significa que los datos almacenados se pierden cuando se apaga la computadora o se corta la energía.