¿Cómo sabe free() el tamaño de la memoria que se va a desasignar?

Considere el siguiente prototipo de función free() que se usa para liberar memoria asignada usando malloc() o calloc() o realloc() . void free(void *ptr); Tenga en cuenta que la función gratuita no acepta el tamaño como parámetro. ¿Cómo sabe la función free() cuánta memoria liberar con solo un puntero? La siguiente es la forma más … Continue reading «¿Cómo sabe free() el tamaño de la memoria que se va a desasignar?»

Ordenar una array bidimensional dinámica de strings

Requisito previo: ¿Cómo asignar dinámicamente una array 2D en C? Puntero doble: un puntero que apunta a otro puntero se conoce como puntero doble. Para representar el doble puntero se utiliza ‘ ** ‘. El puntero doble también se denomina puntero a puntero. Ejemplo: Input: Geeks, Gfg, Placement, Sudo, Gate Output: Gate, Geeks, Gfg, Placement, … Continue reading «Ordenar una array bidimensional dinámica de strings»

Fuga de memoria en C++ y ¿Cómo evitarlo?

La fuga de memoria ocurre en C++ cuando los programadores asignan memoria usando una nueva palabra clave y se olvidan de desasignar la memoria usando la función delete() o el operador delete[] . Una de las pérdidas de memoria más frecuentes se produce en C++ al utilizar un operador de eliminación incorrecto. El operador de eliminación … Continue reading «Fuga de memoria en C++ y ¿Cómo evitarlo?»

C | Asignación dinámica de memoria | Pregunta 8

Considere el siguiente programa, ¿dónde se almacenan i, j y k en la memoria? int i; int main() {     int j;     int *k = (int *) malloc (sizeof(int)); } (A) i, j y *k se almacenan en el segmento de la pila (B) i y j se almacenan en el segmento de la pila. *k … Continue reading «C | Asignación dinámica de memoria | Pregunta 8»

¿Qué es la fuga de memoria? ¿Cómo podemos evitar?

La fuga de memoria ocurre cuando los programadores crean una memoria en el montón y se olvidan de eliminarla.  Las consecuencias de la fuga de memoria es que reduce el rendimiento de la computadora al reducir la cantidad de memoria disponible. Eventualmente, en el peor de los casos, se puede asignar demasiada memoria disponible y … Continue reading «¿Qué es la fuga de memoria? ¿Cómo podemos evitar?»

C | Asignación dinámica de memoria | Pregunta 3

¿Producción? # include<stdio.h> # include<stdlib.h>     void fun(int *a) {     a = (int*)malloc(sizeof(int)); }     int main() {     int *p;     fun(p);     *p = 6;     printf(«%d\n»,*p);     return(0); } (A) Puede que no funcione (B) Funciona e imprime 6 Respuesta: (A) Explicación: El programa no es válido. Intente reemplazar “int *p;” con “int *p = NULL;” e … Continue reading «C | Asignación dinámica de memoria | Pregunta 3»

Diseño de memoria de programas C

  Una representación de memoria típica de un programa en C consta de las siguientes secciones. 1. Segmento de texto (es decir, instrucciones) 2. Segmento de datos inicializados  3. Segmento de datos no inicializados (bss) 4. Montón  5. Pila  C #include <stdio.h>   int main(void) {     return 0; } C #include <stdio.h>   int global; … Continue reading «Diseño de memoria de programas C»

C | Asignación dinámica de memoria | Pregunta 1

La combinación más adecuada para los siguientes pares (GATE CS 2000) X: m=malloc(5); m= NULL;        1: using dangling pointers Y: free(n); n->value=5;         2: using uninitialized pointers Z: char *p; *p = ’a’;           3. lost memory is: (A) X—1 Y—3 Z-2 (B) (X—2 Y—1 Z-3 (C) X—3 Y—2 Z-1 Haga clic aquí para el curso completo! … Continue reading «C | Asignación dinámica de memoria | Pregunta 1»

Volcado de núcleo (fallo de segmentación) en C/C++

La falla de volcado de núcleo/segmentación es un tipo específico de error causado por el acceso a la memoria que «no le pertenece».   Cuando un fragmento de código intenta realizar una operación de lectura y escritura en una ubicación de solo lectura en la memoria o en un bloque de memoria liberado, se conoce como … Continue reading «Volcado de núcleo (fallo de segmentación) en C/C++»

C | Asignación dinámica de memoria | Pregunta 5

¿Cuál es el tipo de devolución de malloc() o calloc() (A) void * (B) Tipo de puntero de memoria asignada (C) void ** (D) int * Respuesta: (A) Explicación: malloc() y calloc( ) devolución nula *. Es posible que recibamos una advertencia en C si no escribimos el tipo de retorno al puntero apropiado. Cuestionario … Continue reading «C | Asignación dinámica de memoria | Pregunta 5»