Preguntas etiquetadas con free

538
¿Qué pasa REALMENTE cuando no liberas después de Malloc?

Esto ha sido algo que me ha molestado por años. A todos nos enseñan en la escuela (al menos, yo era) que DEBES liberar cada puntero asignado. Sin embargo, tengo un poco de curiosidad sobre el costo real de no liberar memoria. En algunos casos obvios, como cuando mallocse llama dentro de un bucle o...

385
¿Cómo sabe free cuánto cuesta liberar?

En la programación en C, puede pasar cualquier tipo de puntero que desee como argumento para liberar, ¿cómo sabe el tamaño de la memoria asignada para liberar? Cada vez que paso un puntero a alguna función, también tengo que pasar el tamaño (es decir, un conjunto de 10 elementos necesita recibir 10...

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

Quiero saber cómo mallocy freetrabajar. 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...

92
costo de operación atómica

¿Cuál es el costo de la operación atómica (cualquiera de comparación e intercambio o adición / disminución atómica)? ¿Cuántos ciclos consume? ¿Pausará otros procesadores en SMP o NUMA, o bloqueará los accesos a la memoria? ¿Vaciará el búfer de reordenamiento en la CPU fuera de servicio? ¿Qué...

92
Cómo localizar un error "doble libre o corrupto"

Cuando ejecuto mi programa (C ++), se bloquea con este error. * glibc detectado * ./load: doble libre o corrupción (! prev): 0x0000000000c6ed50 *** ¿Cómo puedo localizar el error? Intenté usar std::coutdeclaraciones print ( ), sin éxito. ¿Podría gdbhacer esto más fácil?...

82
¿Por qué anular el valor de retorno de free?

Estoy leyendo un libro ( Programación con hilos POSIX de Butenhof, 1997) que usa C, y me encontré con la siguiente línea: (void)free(data); Aquí, dataes solo un puntero a una estructura asignada, data = malloc(sizeof(my_struct_t)); ¿Por qué es el resultado de freeser lanzado a void? Desde mi...