Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Alocando Structs Dinamicamente | Trabalhando com Ponteiros e Structs
Dominando Structs em C

bookAlocando Structs Dinamicamente

Vamos revisar como alocar memória dinamicamente na linguagem C.

Para alocar memória na heap, utilize a função malloc() da biblioteca stdlib.h:

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

Quando você aloca memória dinamicamente para uso em seu programa, essa memória permanece reservada até que seja explicitamente liberada usando 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; }

Se uma estrutura contiver vários campos de diferentes tipos de dados, o compilador irá equalizar o tamanho dos campos para que a estrutura seja armazenada de forma "conveniente" na memória.

Após a conclusão da tarefa, observe quantos bytes são alocados para a estrutura com os campos int e char. Esse fenômeno será discutido posteriormente neste curso.

Tarefa

Swipe to start coding

Você precisa criar uma estrutura Student e alocar dinamicamente memória para ela usando a função malloc().
Sua tarefa é inicializar a estrutura com valores de exemplo e retornar um ponteiro para ela.

Dentro da função createStudent:

  1. Utilize malloc() para alocar memória para uma estrutura Student.
  2. Verifique se a alocação foi bem-sucedida (caso contrário, retorne NULL).
  3. Atribua um nome padrão usando sprintf() — por exemplo, "Alice Johnson".
  4. Atribua um valor para age, como 21.
  5. Atribua um valor para gpa, como 3.85.
  6. Retorne o ponteiro para a estrutura alocada.

Na função main:

  1. Utilize a função free() para liberar a memória alocada após o uso.

Solução

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 4
single

single

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

close

bookAlocando Structs Dinamicamente

Deslize para mostrar o menu

Vamos revisar como alocar memória dinamicamente na linguagem C.

Para alocar memória na heap, utilize a função malloc() da biblioteca stdlib.h:

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

Quando você aloca memória dinamicamente para uso em seu programa, essa memória permanece reservada até que seja explicitamente liberada usando 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; }

Se uma estrutura contiver vários campos de diferentes tipos de dados, o compilador irá equalizar o tamanho dos campos para que a estrutura seja armazenada de forma "conveniente" na memória.

Após a conclusão da tarefa, observe quantos bytes são alocados para a estrutura com os campos int e char. Esse fenômeno será discutido posteriormente neste curso.

Tarefa

Swipe to start coding

Você precisa criar uma estrutura Student e alocar dinamicamente memória para ela usando a função malloc().
Sua tarefa é inicializar a estrutura com valores de exemplo e retornar um ponteiro para ela.

Dentro da função createStudent:

  1. Utilize malloc() para alocar memória para uma estrutura Student.
  2. Verifique se a alocação foi bem-sucedida (caso contrário, retorne NULL).
  3. Atribua um nome padrão usando sprintf() — por exemplo, "Alice Johnson".
  4. Atribua um valor para age, como 21.
  5. Atribua um valor para gpa, como 3.85.
  6. Retorne o ponteiro para a estrutura alocada.

Na função main:

  1. Utilize a função free() para liberar a memória alocada após o uso.

Solução

Switch to desktopMude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo
Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 4
single

single

some-alt