Louder Than Hell
21-06-2003, 10:58
Ieri stavo facendo uno dei miei soliti programmi scemi e ho notatato che se lo faccio cosi:
#include <iostream.h>
#include <alloc.h>
#include <stdlib.h>
#include <windows.h>
main(){
int mem=2000000000,def=1000000000;
int*blocco;
long double disp;
while(1){
if((blocco=(int*)malloc(mem))==NULL){
cout<<"Non e' possibile allocare "<<mem<<" byte in memoria! Provo con meno byte!"<<endl;
mem=mem-def;
}
else{
if(def==1){
cout<<endl<<"La ricerca e' finita:"<<endl<<"il tuo sistema dispone di "<<mem<<" kb di memoria!"<<endl<<endl;
system("pause");
exit(0);
}
cout<<"Posso allocare "<<mem<<" byte!"<<endl;
mem=mem+def;
cout<<"Abbasso la definizione di ricerca da "<<def;
def=def/10;
cout<<" a "<<def<<endl;
free(blocco);
cout<<"Libero la memoria"<<endl;
}
}
}
Non aspetta system("pause"); e non si ferma neanche se metto cin>>def;! Come è possibile!??????!?!???!??!?
Ho dovuto ripiegare cosi:
#include <iostream.h>
#include <alloc.h>
#include <stdlib.h>
#include <windows.h>
main(){
int mem=2000000000,def=1000000000;
int*blocco;
bool carryon=true;
long double disp;
while(carryon){
if((blocco=(int*)malloc(mem))==NULL){
cout<<"Non e' possibile allocare "<<mem<<" byte in memoria! Provo con meno byte!"<<endl;
mem=mem-def;
}
else{
if(def==1){
carryon=false;
disp=mem;
disp=disp/1000000;
}
cout<<"Posso allocare "<<mem<<" byte!"<<endl;
mem=mem+def;
cout<<"Abbasso la definizione di ricerca da "<<def;
def=def/10;
cout<<" a "<<def<<endl;
free(blocco);
cout<<"Libero la memoria"<<endl;
}
}
cout<<endl<<"La ricerca e' finita:"<<endl<<"il tuo sistema dispone di "<<disp<<" MB di memoria!"<<endl<<endl;
system("pause");
}
Qualcuno mi spiega perchè? :eek:
#include <iostream.h>
#include <alloc.h>
#include <stdlib.h>
#include <windows.h>
main(){
int mem=2000000000,def=1000000000;
int*blocco;
long double disp;
while(1){
if((blocco=(int*)malloc(mem))==NULL){
cout<<"Non e' possibile allocare "<<mem<<" byte in memoria! Provo con meno byte!"<<endl;
mem=mem-def;
}
else{
if(def==1){
cout<<endl<<"La ricerca e' finita:"<<endl<<"il tuo sistema dispone di "<<mem<<" kb di memoria!"<<endl<<endl;
system("pause");
exit(0);
}
cout<<"Posso allocare "<<mem<<" byte!"<<endl;
mem=mem+def;
cout<<"Abbasso la definizione di ricerca da "<<def;
def=def/10;
cout<<" a "<<def<<endl;
free(blocco);
cout<<"Libero la memoria"<<endl;
}
}
}
Non aspetta system("pause"); e non si ferma neanche se metto cin>>def;! Come è possibile!??????!?!???!??!?
Ho dovuto ripiegare cosi:
#include <iostream.h>
#include <alloc.h>
#include <stdlib.h>
#include <windows.h>
main(){
int mem=2000000000,def=1000000000;
int*blocco;
bool carryon=true;
long double disp;
while(carryon){
if((blocco=(int*)malloc(mem))==NULL){
cout<<"Non e' possibile allocare "<<mem<<" byte in memoria! Provo con meno byte!"<<endl;
mem=mem-def;
}
else{
if(def==1){
carryon=false;
disp=mem;
disp=disp/1000000;
}
cout<<"Posso allocare "<<mem<<" byte!"<<endl;
mem=mem+def;
cout<<"Abbasso la definizione di ricerca da "<<def;
def=def/10;
cout<<" a "<<def<<endl;
free(blocco);
cout<<"Libero la memoria"<<endl;
}
}
cout<<endl<<"La ricerca e' finita:"<<endl<<"il tuo sistema dispone di "<<disp<<" MB di memoria!"<<endl<<endl;
system("pause");
}
Qualcuno mi spiega perchè? :eek: