Rakenteiden Dynaaminen Varaaminen
Kerrataan, miten muistia varataan dynaamisesti C-kielessä.
Muistin varaamiseen keosta käytetään malloc()-funktiota, joka löytyy stdlib.h-kirjastosta:
<pointer> = (data_type*)malloc(n * sizeof(data_type));
Kun varaat muistia dynaamisesti ohjelmassasi, muisti pysyy varattuna, kunnes vapautat sen erikseen käyttämällä free()-funktiota.
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; }
Jos rakenne sisältää useita kenttiä eri tietotyypeillä, kääntäjä tasaa kenttien koot niin, että rakenne voidaan tallentaa muistiin "sopivasti".
Kun tehtävä on suoritettu, kiinnitä huomiota siihen, kuinka monta tavua rakenteelle, jossa on int- ja char-kentät, varataan. Tätä ilmiötä käsitellään tarkemmin myöhemmin tällä kurssilla.
Swipe to start coding
Sinun tulee luoda Student-rakenne ja varata sille dynaamisesti muistia käyttämällä malloc()-funktiota.
Tehtävänäsi on alustaa rakenne esimerkkitiedoilla ja palauttaa osoitin siihen.
createStudent-funktion sisällä:
- Käytä
malloc()-funktiota varataksesi muistia yhdelle Student-rakenteelle. - Tarkista, onnistuiko varaus (jos ei, palauta
NULL). - Aseta oletusnimi käyttäen
sprintf()-funktiota — esimerkiksi"Alice Johnson". - Aseta arvo kenttään
age, esimerkiksi21. - Aseta arvo kenttään
gpa, esimerkiksi3.85. - Palauta osoitin varattuun rakenteeseen.
main-funktiossa:
- Käytä
free()-funktiota vapauttaaksesi varatun muistin käytön jälkeen.
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Mahtavaa!
Completion arvosana parantunut arvoon 4.35
Rakenteiden Dynaaminen Varaaminen
Pyyhkäise näyttääksesi valikon
Kerrataan, miten muistia varataan dynaamisesti C-kielessä.
Muistin varaamiseen keosta käytetään malloc()-funktiota, joka löytyy stdlib.h-kirjastosta:
<pointer> = (data_type*)malloc(n * sizeof(data_type));
Kun varaat muistia dynaamisesti ohjelmassasi, muisti pysyy varattuna, kunnes vapautat sen erikseen käyttämällä free()-funktiota.
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; }
Jos rakenne sisältää useita kenttiä eri tietotyypeillä, kääntäjä tasaa kenttien koot niin, että rakenne voidaan tallentaa muistiin "sopivasti".
Kun tehtävä on suoritettu, kiinnitä huomiota siihen, kuinka monta tavua rakenteelle, jossa on int- ja char-kentät, varataan. Tätä ilmiötä käsitellään tarkemmin myöhemmin tällä kurssilla.
Swipe to start coding
Sinun tulee luoda Student-rakenne ja varata sille dynaamisesti muistia käyttämällä malloc()-funktiota.
Tehtävänäsi on alustaa rakenne esimerkkitiedoilla ja palauttaa osoitin siihen.
createStudent-funktion sisällä:
- Käytä
malloc()-funktiota varataksesi muistia yhdelle Student-rakenteelle. - Tarkista, onnistuiko varaus (jos ei, palauta
NULL). - Aseta oletusnimi käyttäen
sprintf()-funktiota — esimerkiksi"Alice Johnson". - Aseta arvo kenttään
age, esimerkiksi21. - Aseta arvo kenttään
gpa, esimerkiksi3.85. - Palauta osoitin varattuun rakenteeseen.
main-funktiossa:
- Käytä
free()-funktiota vapauttaaksesi varatun muistin käytön jälkeen.
Ratkaisu
Kiitos palautteestasi!
single