Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Dynamically Allocating Structs | Pointers and Structs
C Structs

bookDynamically Allocating Structs

Let's review how to dynamically allocate memory in the C language.

To allocate memory on the heap, use the malloc() function from the stdlib.h library:

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

When you dynamically allocate memory for use in your program, that memory remains reserved until you explicitly free it using 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; }

If a structure contains several fields of different data types, the compiler will equalize the size of the fields so that the structure is "conveniently" stored in memory.

After the completed job, pay attention to how many bytes are allocated for the structure with the int and char fields. This phenomenon will be discussed later in this course.

Tarea

Swipe to start coding

You need to create a Student structure and dynamically allocate memory for it using the malloc() function.
Your task is to initialize the structure with sample values and return a pointer to it.

Inside the createStudent function:

  1. Use malloc() to allocate memory for one Student structure.
  2. Check if the allocation was successful (if not, return NULL).
  3. Assign a default name using sprintf() — for example, "Alice Johnson".
  4. Assign a value for age, such as 21.
  5. Assign a value for gpa, such as 3.85.
  6. Return the pointer to the allocated structure.

In the main function:

  1. Use the free() function to release the allocated memory after use.

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

Suggested prompts:

Can you explain why the compiler equalizes the size of structure fields?

How do I check the size of a structure in C?

What happens if I forget to free dynamically allocated memory?

close

bookDynamically Allocating Structs

Desliza para mostrar el menú

Let's review how to dynamically allocate memory in the C language.

To allocate memory on the heap, use the malloc() function from the stdlib.h library:

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

When you dynamically allocate memory for use in your program, that memory remains reserved until you explicitly free it using 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; }

If a structure contains several fields of different data types, the compiler will equalize the size of the fields so that the structure is "conveniently" stored in memory.

After the completed job, pay attention to how many bytes are allocated for the structure with the int and char fields. This phenomenon will be discussed later in this course.

Tarea

Swipe to start coding

You need to create a Student structure and dynamically allocate memory for it using the malloc() function.
Your task is to initialize the structure with sample values and return a pointer to it.

Inside the createStudent function:

  1. Use malloc() to allocate memory for one Student structure.
  2. Check if the allocation was successful (if not, return NULL).
  3. Assign a default name using sprintf() — for example, "Alice Johnson".
  4. Assign a value for age, such as 21.
  5. Assign a value for gpa, such as 3.85.
  6. Return the pointer to the allocated structure.

In the main function:

  1. Use the free() function to release the allocated memory after use.

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