Articles of malloc

El acceso a la memoria dinámica solo funciona dentro de la función

Esta pregunta debe usarse como un duplicado canónico para estas preguntas frecuentes: Estoy asignando datos dinámicamente dentro de una función y todo funciona bien, pero solo dentro de la función donde se lleva a cabo la asignación. Cuando bash utilizar los mismos datos fuera de la función, recibo lockings u otro comportamiento inesperado del progtwig. […]

Progtwigción C: malloc () dentro de otra función

Necesito ayuda con malloc() dentro de otra función . Estoy pasando un puntero y un tamaño a la función desde mi main() y me gustaría asignar memoria para ese puntero dinámicamente usando malloc() desde dentro de esa función llamada, pero lo que veo es que … la memoria, que se está asignando, es para el […]

Diferencia entre malloc y calloc?

Cuál es la diferencia entre hacer: ptr = (char **) malloc (MAXELEMS * sizeof(char *)); o: ptr = (char **) calloc (MAXELEMS, sizeof(char*)); ¿Cuándo es una buena idea usar calloc sobre malloc o viceversa?

¿Por qué Malloc + Memset es más lento que Calloc?

Se sabe que calloc es diferente de malloc porque inicializa la memoria asignada. Con calloc , la memoria se establece en cero. Con malloc , la memoria no se borra. Entonces en el trabajo diario, considero a calloc como malloc + memset . A propósito, para divertirme, escribí el siguiente código para un punto de […]

¿Qué sucede REALMENTE cuando no liberas después de malloc?

Esto ha sido algo que me ha molestado por años. Todos nos enseñaron en la escuela (al menos yo) que DEBES liberar cada apuntador que se le asigna. Sin embargo, estoy un poco curioso sobre el costo real de no liberar memoria. En algunos casos obvios, como cuando se llama malloc dentro de un bucle […]

¿Por qué el uso de alloca () no se considera una buena práctica?

alloca() asigna memoria de Stack en lugar de Heap, que es el caso en malloc() . Entonces, cuando regreso de la rutina, la memoria se libera. Entonces, en realidad, esto resuelve mi problema de liberar la memoria asignada dinámicamente. La liberación de la memoria asignada a través de malloc() es un gran dolor de cabeza […]

¿Cómo funcionan malloc () y free ()?

Quiero saber cómo malloc y trabajo free . int main() { unsigned char *p = (unsigned char*)malloc(4*sizeof(unsigned char)); memset(p,0,4); strcpy((char*)p,”abcdabcd”); // **deliberately storing 8bytes** cout << p; free(p); // Obvious Crash, but I need how it works and why crash. cout << p; return 0; } Estaría muy agradecido si la respuesta es en profundidad […]

¿En qué casos uso malloc vs new?

Veo que en C ++ hay múltiples formas de asignar y liberar datos, y entiendo que cuando llame a malloc debe llamar free y cuando use el new operador debe emparejar con delete y es un error mezclar los dos (por ejemplo, llamar free() en algo que se creó con el new operador), pero no […]

¿Cómo puedo configurar, acceder y liberar correctamente una matriz multidimensional en C?

He visto docenas de preguntas sobre “qué pasa con mi código” con respecto a las matrices multidimensionales en C. Por alguna razón, las personas no parecen entender lo que está sucediendo aquí, así que decidí responder esta pregunta como una referencia a los demás : ¿Cómo puedo configurar, acceder y liberar correctamente una matriz multidimensional […]

¿Lanzo el resultado de malloc?

En esta pregunta , alguien sugirió en un comentario que no debería emitir el resultado de malloc , es decir, int *sieve = malloc(sizeof(int) * length); más bien que: int *sieve = (int *) malloc(sizeof(int) * length); Por qué sería este el caso?