|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Registered User
Iscritto dal: Oct 2006
Messaggi: 82
|
[c++] Risorse online
Mi sapete consigliare delle risorse online affidabili (in italiano o in inglese) sul c++?
Di materiale online se ne trova tanto ma ho dubbi sulla qualità. Già che ci sono vi faccio anche una domanda: è corretto fare? int * p = 0; delete p; Il delete non crea problemi quando gli si passa un puntantore che vale 0?? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Non devi usare la delete sui puntatori, a meno che non puntino a zone di memoria allocate dinamicamente.
Per il materiale, leggiti "Thinking in C++" di Bruce Eckel, è di buona qualità, è gratuito, e dovresti anche trovarlo tradotto, se non ricordo male.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#3 | |
|
Registered User
Iscritto dal: Oct 2006
Messaggi: 82
|
Quote:
supponi che io abbia il mio: myclass *p=0; Supponiamo poi che io possa fare: p = new myclass; Quando vado a cancellare la memoria puntata da p, non so se ho allocato qualcosa oppure no. Se faccio delete p; e ho allocato qualcosa, la memoria puntata da p viene liberata e va tutto bene, ma se faccio delete p; e p è 0 perchè non ho allocato nulla, che succede? |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Non ho mai provato di persona, ma suppongo che vada in crash. Può essere anche che se il puntatore è effettivamente NULL (un ((void*)0)) l'operatore delete eviti di provare a liberarne la memoria, ma non te lo posso garantire.
Se avessi un compilatore C++ sotto mano te lo direi con sicurezza assoluta: perché non provi effettivamente a lanciarlo e vedere cosa succede?
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#5 | |
|
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16212
|
Quote:
Association of C and C++ Users Immagino sia lecito. Tutt'al più, l'operatore delete dovrebbe riconoscere che 0 non è una locazione "utilizzabile", e regolarsi di conseguenza. Però, leggi cosa dicono su TechInterviews: -------- C'è qualcosa di sbagliato in questo codice? Codice:
T *p = 0; delete p; Il candidato non capisce i puntatori. Un candidato molto sveglio chiederà se delete viene sovraccaricato per la classe T. --------
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:00.




















