Динамічне Виділення Структур
Розглянемо, як динамічно виділяти пам'ять у мові C.
Для виділення пам'яті у купі використовуйте функцію malloc() з бібліотеки stdlib.h:
<pointer> = (data_type*)malloc(n * sizeof(data_type));
Після динамічного виділення пам'яті для використання у програмі, ця пам'ять залишається зарезервованою, доки ви явно не звільните її за допомогою free().
main.c
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; }
Якщо структура містить кілька полів різних типів даних, компілятор буде вирівнювати розмір полів так, щоб структура була "зручно" розміщена в пам'яті.
Після виконання завдання зверніть увагу, скільки байтів виділено для структури з полями int та char. Це явище буде розглянуто пізніше у цьому курсі.
Swipe to start coding
Потрібно створити структуру Student і динамічно виділити для неї пам'ять за допомогою функції malloc().
Ваше завдання — ініціалізувати структуру зразковими значеннями та повернути вказівник на неї.
У функції createStudent:
- Використати
malloc()для виділення пам'яті під одну структуру Student. - Перевірити, чи виділення було успішним (якщо ні — повернути
NULL). - Присвоїти стандартне ім'я за допомогою
sprintf(), наприклад,"Alice Johnson". - Присвоїти значення для
age, наприклад,21. - Присвоїти значення для
gpa, наприклад,3.85. - Повернути вказівник на виділену структуру.
У функції main:
- Використати функцію
free()для звільнення виділеної пам'яті після використання.
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Чудово!
Completion показник покращився до 4.35
Динамічне Виділення Структур
Свайпніть щоб показати меню
Розглянемо, як динамічно виділяти пам'ять у мові C.
Для виділення пам'яті у купі використовуйте функцію malloc() з бібліотеки stdlib.h:
<pointer> = (data_type*)malloc(n * sizeof(data_type));
Після динамічного виділення пам'яті для використання у програмі, ця пам'ять залишається зарезервованою, доки ви явно не звільните її за допомогою free().
main.c
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; }
Якщо структура містить кілька полів різних типів даних, компілятор буде вирівнювати розмір полів так, щоб структура була "зручно" розміщена в пам'яті.
Після виконання завдання зверніть увагу, скільки байтів виділено для структури з полями int та char. Це явище буде розглянуто пізніше у цьому курсі.
Swipe to start coding
Потрібно створити структуру Student і динамічно виділити для неї пам'ять за допомогою функції malloc().
Ваше завдання — ініціалізувати структуру зразковими значеннями та повернути вказівник на неї.
У функції createStudent:
- Використати
malloc()для виділення пам'яті під одну структуру Student. - Перевірити, чи виділення було успішним (якщо ні — повернути
NULL). - Присвоїти стандартне ім'я за допомогою
sprintf(), наприклад,"Alice Johnson". - Присвоїти значення для
age, наприклад,21. - Присвоїти значення для
gpa, наприклад,3.85. - Повернути вказівник на виділену структуру.
У функції main:
- Використати функцію
free()для звільнення виділеної пам'яті після використання.
Рішення
Дякуємо за ваш відгук!
single