Por Darwin Mobley Salas -  Estudiante de la carrera de Ingeniería Informática

Las computadoras son máquinas que se encargan de recibir y procesar información. Una de las funciones importantes es la estructura de datos con información perteneciente a un conjunto ordenado, como lo son los montículos, ya que estos son un espacio de memoria en sí mismos. No son estructuras encargadas de administrar tan cercanamente el sistema operativo de un dispositivo móvil, pero son los encargados de muchos espacios de memoria, donde un programador, en el código, almacena variables temporales para cada función que realiza. Estas estructuras de datos no son exactamente gestionadas ni optimizadas por el CPU, ya que son una memoria flotante. El programador se encarga de asignar o liberar bloques de variables, pero ¿cuáles son las funciones, ventajas y desventajas de la utilización de montículos? En este artículo, se aborda el tema desde un punto de vista personal, apoyado en algunas investigaciones.

A continuación, se explica cuándo utilizar el montículo, de acuerdo con el artículo posteado en la página web de Memory: Stack vs Heap: “If you need to allocate a large block of memory (e.g. a large array, or a big struct), and you need to keep that variable around a long time (like a global), then you should allocate it on the heap” (Gribble, 2012). Este artículo explica cuándo es necesario la utilización de montículos en un programa.

Lo primero es cerciorarse si lo que se necesita son variables muy pequeñas o variables, como las matrices o estructuras que cambian exponencialmente su tamaño. Estas útimas tienden a cambiar su tamaño, haciendo necesario la utilización de los montículos y sus funciones como las de memoria dinámica, entre ellas, malloc, calloc, realloc y free. Estas se deben asignar a manualmente por la que desarrolla.

Algunas de las ventajas y desventajas de la utilización de los montículos son que esta estructura puede acceder a variables globales sin ningún limite en el tamaño de la memoria, ya que con la utilización de punteros se hace fácil el acceso a la memoria en el almacenamiento dinámico, pero ¿qué son los punteros? “Los punteros son datos en C que realizan un almacenamiento direccional en la memoria. Por esta razón es que accederlas es relativamente más lento” (Gribble, 2012). Además, se tiene que tener mucho cuidado para no generar memory leaks (pérdida de memoria), que es básicamente cuando una aplicación comienza a consumir recursos hasta llegar a saturarlos, causando así un estado de error, lo que puede significar desde que la aplicación deje de funcionar hasta que el sistema operativo completo entre en un colapso y deba reiniciarse.

En este articulo se busca abarcar puntos importantes que tienen los montículos y cómo administrarlos a nivel de programación, ya que es un tipo de memoria específico. Además, se toma en cuenta, en breve, la importancia que tienen los montículos (almacenamiento libre) para los programadores, ya que ellos son los encargados de poner en práctica el conocimiento de sus funciones manualmente. El objetivo de este documento es brindar una opinión personal para retroalimentar a las personas para que su intelecto se enriquezca con este conocimiento.

 

MOXIE es el Canal de ULACIT (www.ulacit.ac.cr), producido por y para los estudiantes universitarios, en alianza con el medio periodístico independiente Delfino.cr, con el propósito de brindarles un espacio para generar y difundir sus ideas.  Se llama Moxie - que en inglés urbano significa tener la capacidad de enfrentar las dificultades con inteligencia, audacia y valentía - en honor a nuestros alumnos, cuyo “moxie” los caracteriza.

Referencias bibliográficas:
• Gribble, P. (2012). Memory: Stack vs Heap. Recuperado de https://gribblelab.org/CBootCamp/7_Memory_Stack_vs_Heap.html#org02d2754