| 
 | |||||||
| 
 | 
|  | 
|  | 
|  | Strumenti | 
|  30-07-2008, 10:20 | #1 | 
| Senior Member Iscritto dal: Nov 2002 
					Messaggi: 6254
				 | 
				
				[C] malloc enorme
			 
		Ciao, avrei due domande sulla malloc. 1)Supponiamo che ho 2 gb di RAM sulla mia macchina. Cosa succede se faccio una malloc di più di 2 gb? L'applicazione schianta o comunque alloca fino a che può? 2) Caso di prima, quindi 2gb di RAM, ma solo 500 mb liberi. Se alloco più di 500 mb che succede? | 
|   |   | 
|  30-07-2008, 10:29 | #2 | 
| Senior Member Iscritto dal: Jul 2008 Città: Roma 
					Messaggi: 542
				 | 
		1) No. Non perche' hai 2 G di RAM, ma perche', normalmente, Windows non mette a disposizione di un processo utente piu' di 2 G di spazio di indirizzamento virtuale. 2) La memoria potrebbe essere allocata in quanto il sistema pagina su disco. | 
|   |   | 
|  30-07-2008, 10:46 | #3 | ||
| Senior Member Iscritto dal: Oct 2005 
					Messaggi: 3306
				 | Quote: 
 Quote: 
 Nel caso di immagini RAW non è difficile superare i 500MB. | ||
|   |   | 
|  30-07-2008, 10:47 | #4 | 
| Senior Member Iscritto dal: Nov 2002 
					Messaggi: 6254
				 | 
		
E sotto Linux?
		 | 
|   |   | 
|  30-07-2008, 11:06 | #5 | ||
| Senior Member Iscritto dal: Apr 2000 Città: Roma 
					Messaggi: 15625
				 | Quote: 
 Nel caso di linux, inoltre, la malloc è limitata a una certa quantità (anche su macchine a 64 bit), non ricordo quale esattamente; per allocazioni enormi tipo la tua, è consigliabile una mmap anonima (v. man mmap). Meglio ancora se effettuata con huge pages (v. google per hugetlbfs). Infine, lo spazio di indirizzi su una macchina a 32 bit per processo è di 3GB, ma non so se riesci a trovare un buco di 2GB di indirizzi per la tua mmap (v. /proc/self/maps per informazioni sul tipico layout degli indirizzi di un processo). Quote: 
 In sintesi, se hai bisogno di tutti quegli indirizzi, hai bisogno di una macchina a 64 bit. 
				__________________ 0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 | ||
|   |   | 
|  30-07-2008, 13:10 | #6 | |
| Senior Member Iscritto dal: Jun 2002 Città: Dublin 
					Messaggi: 5989
				 | Quote: 
   
				__________________ C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! | |
|   |   | 
|  30-07-2008, 13:57 | #7 | |
| Senior Member Iscritto dal: Apr 2000 Città: Roma 
					Messaggi: 15625
				 | Quote: 
 E' una scelta dettata dalle prestazioni; c'era in giro fino a qualche tempo fa una patch per avere uno spazio separato 4GB/4GB per il kernel e le applicazioni, ma aveva un certo impatto computazionale. Stava nel ramo -mm, non so se c'è ancora. 
				__________________ 0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 | |
|   |   | 
|  30-07-2008, 14:23 | #8 | 
| Senior Member Iscritto dal: Jul 2002 Città: Milano 
					Messaggi: 19148
				 | |
|   |   | 
|   | 
| Strumenti | |
| 
 | 
 | 
Tutti gli orari sono GMT +1. Ora sono le: 18:33.









 
		 
		 
		 
		










 
  
 



 
                        
                        










