Saltar al contenido principal
LibreTexts Español

12.5: Liberar memoria

  • Page ID
    82138
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    Una vez que haya terminado de usar la memoria, debe devolverla al pool de memoria libre. Si no lo haces, ninguna otra aplicación (ni el sistema operativo) puede usarlo. La memoria se perderá efectivamente hasta que se rearranque el sistema. Esto se conoce como una fuga de memoria. Para devolver memoria para la que no tienes más uso, usa free (). Aquí está el prototipo:

    int free( void *p );
    

    p es el puntero que recibiste inicialmente de malloc () o calloc (). El valor de retorno de la función free () es 0 para el éxito o −1 en caso de error. Normalmente esta función nunca falla si se le da un puntero válido. Si falla, hay poco que puedas hacer al respecto (al menos no en este nivel). Recuerda: ¡Cada bloque que asignes eventualmente debe ser liberado! Quizás te preguntes por qué la función free () no necesita saber el tamaño del bloque para liberar. Esto se debe a que junto con la memoria que te pasan, malloc () y calloc () en realidad asignan un poco más para que lo use el sistema operativo. En esta memoria extra que no ves se almacenan elementos como el tamaño del bloque. Esto te ahorra un poco de trabajo de mantenimiento de la casa.


    This page titled 12.5: Liberar memoria is shared under a CC BY-NC-SA 4.0 license and was authored, remixed, and/or curated by James M. Fiore via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.