Articles of malloc

memoria asignada dinámicamente después de la finalización del progtwig

Cuando finaliza un progtwig C / C ++ que contiene la memoria asignada dinámicamente (utilizando malloc / nuevo) sin llamadas de envío / eliminación, ¿qué ocurre con esa memoria asignada dinámicamente? ¿El sistema operativo recupera la memoria o esa memoria se vuelve inaccesible para otros progtwigs?

¿Por qué recibo una advertencia cada vez que uso malloc?

Si uso malloc en mi código: int *x = malloc(sizeof(int)); Recibo esta advertencia de gcc : new.c:7: warning: implicit declaration of function ‘malloc’ new.c:7: warning: incompatible implicit declaration of built-in function ‘malloc’

C: liberar correctamente la memoria de una matriz multidimensional

Supongamos que tiene el siguiente código ANSI C que inicializa una matriz multidimensional: int main() { int i, m = 5, n = 20; int **a = malloc(m * sizeof(int *)); //Initialize the arrays for (i = 0; i < m; i++) { a[i]=malloc(n * sizeof(int)); } //…do something with arrays //How do I free […]

¿Cómo puedo obtener el tamaño de un bloque de memoria asignado usando malloc ()?

Posibles duplicados: ¿Cómo puedo obtener el tamaño de una matriz desde un puntero en C? ¿Hay alguna manera de determinar el tamaño de una matriz de C ++ programáticamente? Y si no, ¿por qué? Obtengo un puntero a un trozo de memoria asignada de una función de estilo C. Ahora, sería muy interesante para la […]

¿Cómo obtener la longitud del bloque de memoria después de malloc?

Pensé que no podría recuperar la longitud de un bloque de memoria asignado como la función simple .length en Java. Sin embargo, ahora sé que cuando malloc() asigna el bloque, asigna bytes adicionales para contener un número entero que contiene el tamaño del bloque. Este entero se encuentra al comienzo del bloque; la dirección realmente […]

Tiempo de complejidad de la asignación de memoria

¿Cuál es la complejidad temporal de la asignación de memoria dinámica utilizando new, malloc, etc.? Sé muy poco sobre cómo se implementan los asignadores de memoria, pero supongo que la respuesta es que depende de la implementación. Por lo tanto, responda por algunos de los casos / implementaciones más comunes. Editar: Recuerdo vagamente haber oído […]

¿Cuál es la diferencia entre “nuevo” y “malloc” y “calloc” en C ++?

¿Cuál es la diferencia entre “nuevo” y “malloc” y “calloc” y otros en la familia? (Cuándo) ¿Necesito algo más que “nuevo”? ¿Uno de ellos se implementa utilizando cualquier otro?

¿Malloc crea perezosamente las páginas de respaldo para una asignación en Linux (y otras plataformas)?

En Linux si tuviera malloc(1024 * 1024 * 1024) , ¿qué hace realmente malloc? Estoy seguro de que asigna una dirección virtual a la asignación (recorriendo la lista gratuita y creando una nueva asignación si es necesario), pero, ¿realmente crea 1 GiB de páginas de intercambio? ¿O mprotect el rango de direcciones y crea las […]

Escribir al puntero fuera de límites después de que malloc () no haya causado el error

cuando pruebo el código a continuación, funciona bien. ¿Me estoy perdiendo de algo? main() { int *p; p=malloc(sizeof(int)); printf(“size of p=%d\n”,sizeof(p)); p[500]=999999; printf(“p[0]=%d”,p[500]); return 0; } Lo probé con malloc (0 * sizeof (int)) o cualquier cosa, pero funciona muy bien. El progtwig solo falla cuando no uso malloc. Así que incluso si asigno 0 […]

¿Puedo confiar en que Malloc devolverá NULL?

Leí que en los sistemas Unix, malloc puede devolver un puntero que no sea NULL, incluso si la memoria no está realmente disponible, e intentar usar la memoria más tarde provocará un error. Como no puedo detectar ese error al buscar NULL, me pregunto qué tan útil es verificar NULL en absoluto. En una nota […]