Sunteți pe pagina 1din 3

#include<iostream>

#include <typeinfo>

using namespace std;

int main(){

/*Exercitiul1

Este necesara dezalocarea explicita de catre programator deoarece la finalul programului nu mai
avem nevoie de zonele alocate de memorie

iar prin dezalocarea memoriei vom aveam avea un program mai rapid si care ocupa mai putin spatiu.

*/

/*Exercitiul2

Risipa de memorie, din punctul de vedere al sistemului si nu doar al aplicatiei care aloca, se manifesta
prin miscarea mai lenta a intregului sistem.

*/

//Exercitiul 3

auto x = new int;

*x=2;

std::cout<<*x<< '\n'; // va afisa dimensiunea pe care i-am dat-o variabilei

*x=3;

std::cout<<*x<< '\n';

*x=4;

std::cout<<*x<< '\n';

delete x; // la final trebuie sa dezalocam memoria deoarece nu dorim ca programul nostru sa


contina spatii de memorie inutile

std::cout<<*x<< '\n'; // arata adresa variabilei, aceasta ne mai avand nici un spatiu alocat

cout<< '\n';
/*

Exercitiul 4 si 5

Static: memoria este alocata la compilare in segmentul de date si nu

se mai poate modifica in cursul executiei. Variabilele globale,

definite in afara functiilor, sunt implicit statice, dar pot fi declarate

static (static) si variabile locale, definite in cadrul functiilor.

Dinamic: memoria se aloca la executie in zona "heap" atasata programului, dar numai

la cererea explicita a programatorului.

-> Alocarea statica e mai eficienta de cat alocarea dinamica atunci cand stim dimensiunea
variabilei(sau daca aceasta are valori foarte mici).

-> Alocarea dinamica e mai eficienta de cat alocarea statica atunci cand nu cunoasteam dimensiunea
variabilei;

Exemplu:

Alocare dinamica pentru o matrice:

// dimensiunile matricei

int n = 3, m = 4; //m si n fiind constante nu are sens sa le alocam dinamic

// declararea matricei ca pointer

int **mat;

// alocarea tabloului de pointeri

mat = new int * [n];

// alocarea tablourilor pentru fiecare linie

for (int i = 0; i < n; i++) mat[i] = new int [m];

// dezalocare vectori pentru fiecare linie

for (int i = 0; i < n; i++)


delete [ ] mat[i];

// dezalocare vector de pointeri

delete [ ] mat;

*/

// Exercitiul 6

auto y = new int;

*y=2;

std::cout << typeid(y).name() << '\n'; //aici afisez tipul variabilei

delete y;

return 0;

S-ar putea să vă placă și