Codice C++
#include<iostream>#include<conio.h>#include<cmath>#include<windows.h>#include<time.h>#include<cstdlib>#include<stdio.h>#include<iomanip>#include<string.h>#include<fstream>using namespace std;struct Prova{ int a;int b;};struct Prova2{ int a;int b;};struct Prova3{ int *a;};void Alloca_Memoria( Prova *T);void Alloca_Memoria2(Prova *&T);Prova* Alloca_Memoria3(Prova *T);void Alloca_Memoria4(Prova2 *&Ts,int s1);void Alloca_Memoria5(Prova3 *&T3);void Alloca_Memoria6(Prova3 *&T3);main(){ Prova *T;Prova2 *Ts;int s1=3;int *x;int k=3;Prova3 *T3;T=new (nothrow) Prova;T->a=1;T->b=2;cout<<"base \n";cout<<T->a<<" "<<T->b<<endl;delete T;//--------------------------------------------------------------------------------------x=new (nothrow) int;*x=4;// valore inizializzato di xcout<<x<<" con solo x stampo l'indirizzo con *x stampo il valore = "<<*x<<endl;x=&k;cout<<x<<" ho assegnato l'indirizzo della variabile k int normale in una x puntatoreint x=&k; in questo modo k=3 "<<*x<<endl;delete x;//----------------------------------------------------------------------------------cout<<"Test ritorno memoria 1 \n";Alloca_Memoria(T);cout<<T->a<<" "<<T->b<<"valori falsi contenuto inesistente o errato "<<endl;//questo perché non ritorna l'indirizzodelete T;cout<<"Test ritorno memoria 2 \n";Alloca_Memoria2(T);cout<<T->a<<" "<<T->b<<endl;// in questo caso i valori ritornanodelete T;cout<<"Test ritorno memoria 3 \n";T=Alloca_Memoria3(T);cout<<T->a<<" "<<T->b<<endl;// in questo caso i valori ritornanodelete T;cout<<"Test ritorno memoria 4 \n";Alloca_Memoria4(Ts,s1);cout<<Ts[0].a<<" "<<Ts[0].b<<endl;// in questo caso i valori ritornanodelete [] Ts;//----------------------------------------------------------------------Alloca_Memoria5(T3);cout<<T3->a[1]<<endl;// in questo caso i valori ritornanodelete [] T3->a;delete T3;//---------------------------------------------------------------------Alloca_Memoria6(T3);system("pause");}void Alloca_Memoria(Prova *T){ T=ne