Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Dynamic Allocation of the Array | Dynamic Memory Allocation
C++ Pointers and References

book
Dynamic Allocation of the Array

Before we explore why dynamic allocation is necessary, let's quickly recap the characteristics of static and dynamic arrays:

  • Fixed Size: Once declared, the size of a static array is fixed and cannot be changed during runtime;

  • Memory Allocation at Compile Time: The memory required for a static array is allocated at compile time.

  • Resizable: Dynamic arrays allow for resizing during runtime, providing flexibility to adapt to changing program requirements;

  • Memory Allocation at Runtime: Memory for dynamic arrays is allocated during program execution.

The Limitations of a Static Approach

Consider the program that prompts the user to input performance scores for each day that has passed in current month.

Unfortunately, we can't achieve this using a static array:

main.cpp

main.cpp

copy
#include <iostream>
#include <ctime>

int main() {
std::time_t currentTime = std::time(nullptr);
int day_passed = std::localtime(&currentTime)->tm_mday;
int arr[day_passed];
std::cout << day_passed << std::endl;
}
12345678910
#include <iostream> #include <ctime> int main() { std::time_t currentTime = std::time(nullptr); int day_passed = std::localtime(&currentTime)->tm_mday; int arr[day_passed]; std::cout << day_passed << std::endl; }

Note

This will generate a compilation error because day_passed is not a constant expression it depends on the runtime value of the current day of the month.

So instead of static array we have to use a dynamic allocated array.

Oppgave

Swipe to start coding

  • Create a dynamic array with a size equivalent to the number of days that have passed.
  • Free allocated memory.

Løsning

solution.cpp

solution.cpp

#include <iostream>
#include <ctime>

int main()
{
std::time_t currentTime = std::time(nullptr);
int day_passed = std::localtime(&currentTime)->tm_mday;
int* arr = new int[day_passed];
std::cout << day_passed << std::endl;
delete[] arr;
}

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 3
single

single

#include <iostream>
#include <ctime>

int main()
{
std::time_t currentTime = std::time(nullptr);
int day_passed = std::localtime(&currentTime)->tm_mday;
int _ arr = ___ int[___];
std::cout << day_passed << std::endl;
___ __ arr;
}

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

We use cookies to make your experience better!
some-alt