Newsgroup: it.comp.lang.c++
Titolo: Operatore new

Cosa ritorna l'operatore new, se non è disponibile abbastanza memoria per 
allocare il tipo specificato? NULL forse (o meglio, 0)?
Grazie.

 allocare il tipo specificato? NULL forse (o meglio, 0)?
No!!!
Torna NULL!
Byes
FusionFai

Torna NULL!
Non mi sembra ci sia casi in cui new restituisca NULL (anche
nel caso si cerchi di allocare 0 byte, se non erro,
restituisce dei non-null pointer).
L'operatore new, in caso negativo, per default, solleva
un'eccezione bad_alloc.  Si puo', comunque, intercettare
oppure si puo' creare un new-handler proprio.
-- 
The Follet

Il  Thu, 11 Oct 2001 23:32:58 +0200, "FusionFai"
<fusio...@NOSPAMflashnet.it> scrisse:

Ed essendo di solito
#define NULL (0L)
per il C++, e' la stessa cosa.
Cmq, new lancia l'eccezione std::bad_alloc se non c'e' abbastanza
memoria. Il NULL (o 0), viene restituito dalla versione nothrow.
Non vedo il motivo per non usare le eccezioni (a parte compilare senza
le eccezioni, se il compilatore lo permette -- comportamento non
portabile)
-- 
+---- | Un OS per domarli, Un OS per trovarli,             |  -o)
+---+ | Un OS per ghermirli e nel buio incatenarli         |  /\\
 O  | | Nella terra di Redmond, ove l'ombra cupa scende... | _\_V
                    raffaele punto salmaso presso libero punto it

 portabile)
Esattamente. Se il poverino usa la new di VC++ quella non tira eccezzioni 
ma torna 0;
Ciao
Gaetano.
-- 
Posted from 
dell-01.mm.eutelsat.org
 [194.214.173.17] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG



Ma in programmi normali senza bug su computer recenti è un caso che si
verifica o non si verifica praticamente mai?
-- 
Marco Barisione (ICQ 84277092)
Su it.news.gruppi si sta discutendo della creazione di it.comp.lang
dove si parlerà dei linguaggi senza un proprio newsgroup e dei
confronti fra i diversi linguaggi.
Se sei interessato unisciti alla discussione.

 allocare il tipo specificato? NULL forse (o meglio, 0)?
In C++ NULL è definito come 0.
Ci sono quattro operatori new. "operator new(size_t)" e "operator
new[](size_t)" danno luogo ad una eccezione, "operator new(size_t, const
std::nothrow_t&)" e "operator new[](size_t, const std::nothrow_t&)"
ritornano 0.
Attenzione che non tutti i compilatori fanno quello che dice lo
standard. In VC6, per esempio, "operator new(size_t)" e "operator
new[](size_t)" ritornano tranquillamente 0. Ma si sa che VC6 non è molto
conforme allo standard.
--
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556

 verifica o non si verifica praticamente mai?
Per verificarsi si verifica. Che poi su alcuni sistemi (per esempio
Windows) tu avrai staccato la spina e riavviato il sistema molto ma
molto prima che si verifichi (perchč non appena cominci ad allocare piů
memoria di quanta ci stia in RAM il sistema rallenta al punto che la
risposta ad un click impiega parecchi minuti a verificarsi) č un altro
discorso.


ma torna 0;
Ed e' fuori standard.
Giusto ?
-- 
The Follet

"The Follet" <thef...@thefollet.bye> wrote in message
news:3bce256e...@news.tin.it...

Giustissimo.
In generale VC6 non č standard quasi su niente.


ma torna 0;
Che e' il comportamento pre-standard (cosi' come (quasi) tutto il
VC++6). Appena passa ad un compilatore standard (e il futuro VC++7 si
avvicina molto) saran dolori...
Cmq, il g++ permette di compilare senza il supporto per le eccezioni,
ma questo e' un comportamento del compilatore.
