Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Asignación Dinámica de Structs | Trabajando con Punteros y Structs
Dominio de las Estructuras en C

bookAsignación Dinámica de Structs

Revisión del proceso para asignar memoria dinámicamente en el lenguaje C.

Para asignar memoria en el heap, utilizar la función malloc() de la biblioteca stdlib.h:

<pointer> = (data_type*)malloc(n * sizeof(data_type));
Note
Nota

Cuando se asigna memoria dinámicamente para su uso en el programa, esa memoria permanece reservada hasta que se libera explícitamente utilizando free().

main.c

main.c

copy
12345678910111213141516171819
#include <stdio.h> #include <stdlib.h> // structure definition struct Example { int someValue[20]; // int = 4 bytes, 20 * 4 = 80 bytes }; int main() { // allocating memory for Example structure struct Example* pExample = (struct Example*)malloc(sizeof(struct Example)); printf("Allocating memory = %zu bytes\n", sizeof(*pExample)); // freeing memory free(pExample); return 0; }

Si una estructura contiene varios campos de diferentes tipos de datos, el compilador igualará el tamaño de los campos para que la estructura se almacene de manera "conveniente" en la memoria.

Después de completar el trabajo, observe cuántos bytes se asignan para la estructura con los campos int y char. Este fenómeno se analizará más adelante en este curso.

Tarea

Swipe to start coding

Se requiere crear una estructura Student y asignar memoria dinámicamente para ella utilizando la función malloc().
La tarea consiste en inicializar la estructura con valores de ejemplo y devolver un puntero a la misma.

Dentro de la función createStudent:

  1. Utilizar malloc() para asignar memoria para una estructura Student.
  2. Verificar si la asignación fue exitosa (en caso contrario, devolver NULL).
  3. Asignar un nombre predeterminado usando sprintf(), por ejemplo, "Alice Johnson".
  4. Asignar un valor para age, como 21.
  5. Asignar un valor para gpa, como 3.85.
  6. Devolver el puntero a la estructura asignada.

En la función main:

  1. Utilizar la función free() para liberar la memoria asignada después de su uso.

Solución

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 4
single

single

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

close

bookAsignación Dinámica de Structs

Desliza para mostrar el menú

Revisión del proceso para asignar memoria dinámicamente en el lenguaje C.

Para asignar memoria en el heap, utilizar la función malloc() de la biblioteca stdlib.h:

<pointer> = (data_type*)malloc(n * sizeof(data_type));
Note
Nota

Cuando se asigna memoria dinámicamente para su uso en el programa, esa memoria permanece reservada hasta que se libera explícitamente utilizando free().

main.c

main.c

copy
12345678910111213141516171819
#include <stdio.h> #include <stdlib.h> // structure definition struct Example { int someValue[20]; // int = 4 bytes, 20 * 4 = 80 bytes }; int main() { // allocating memory for Example structure struct Example* pExample = (struct Example*)malloc(sizeof(struct Example)); printf("Allocating memory = %zu bytes\n", sizeof(*pExample)); // freeing memory free(pExample); return 0; }

Si una estructura contiene varios campos de diferentes tipos de datos, el compilador igualará el tamaño de los campos para que la estructura se almacene de manera "conveniente" en la memoria.

Después de completar el trabajo, observe cuántos bytes se asignan para la estructura con los campos int y char. Este fenómeno se analizará más adelante en este curso.

Tarea

Swipe to start coding

Se requiere crear una estructura Student y asignar memoria dinámicamente para ella utilizando la función malloc().
La tarea consiste en inicializar la estructura con valores de ejemplo y devolver un puntero a la misma.

Dentro de la función createStudent:

  1. Utilizar malloc() para asignar memoria para una estructura Student.
  2. Verificar si la asignación fue exitosa (en caso contrario, devolver NULL).
  3. Asignar un nombre predeterminado usando sprintf(), por ejemplo, "Alice Johnson".
  4. Asignar un valor para age, como 21.
  5. Asignar un valor para gpa, como 3.85.
  6. Devolver el puntero a la estructura asignada.

En la función main:

  1. Utilizar la función free() para liberar la memoria asignada después de su uso.

Solución

Switch to desktopCambia al escritorio para practicar en el mundo realContinúe desde donde se encuentra utilizando una de las siguientes opciones
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 4
single

single

some-alt