Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless
Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless
MSI FORGE GK600 TKL WIRELESS: switch lineari hot-swap, tripla connettività, display LCD e 5 strati di fonoassorbimento. Ottima in gaming, a 79,99 euro
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici
DJI porta un importante aggiornamento alla sua linea di gimbal camera tascabili con Osmo Pocket 4: sensore CMOS da 1 pollice rinnovato, gamma dinamica a 14 stop, profilo colore D-Log a 10 bit, slow motion a 4K/240fps e 107 GB di archiviazione integrata. Un prodotto pensato per i creator avanzati, ma che convince anche per l'uso quotidiano
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Il primo headset open-back della linea INZONE arriva a 200 euro con driver derivati dalle cuffie da studio MDR-MV1 e un peso record di soli 199 grammi
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-02-2005, 20:35   #1
sirus
Senior Member
 
Iscritto dal: Mar 2004
Messaggi: 16053
[C - C++]Allocazione dinamica della memoria, differenza

Ciao a tutti, guardando il mio nuova manuale di C++ ho visto il nuovo metodo di allocazione dinamica della memoria e mi è subito venuto un dubbio
prima in C facevo così:
Codice:
#include <calloc.h>
...
double *p = NULL;
...
p = (double *) calloc(10, sizeof(double));
cfree(p);
ora invece in C++ farei così:
Codice:
...
double *p = NULL;
...
p = new double[10];
...
delete p;
e se volessi variare la dimensione della memoria allocata dinamicamente???
prima facevo così:
Codice:
p = realloc(p, _msize(p) + (5 * sizeof(double));
ma ora come posso fare???

Ultima modifica di sirus : 01-03-2005 alle 14:07.
sirus è offline   Rispondi citando il messaggio o parte di esso
Old 28-02-2005, 22:59   #2
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Re: [C - C++]Allocazione dinamica della memoria, differenza

Quote:
Originariamente inviato da sirus
ma ora come posso fare???
Non si fa'
O meglio, non si fa come in C, ma in maniera "piu' lenta", perche' in C++ hai a che fare con oggetti che non possono in generale essere copiati bit a bit. Per questo motivo non esiste alcun modo in C++ standard per reallocare la memoria "in place" come in C.

Finita la teoria, ora la pratica.

Codice:
double* arrayOfDouble = new double[10];

...

// alloca un nuovo array
double* newArrayOfDouble = new double[20];

// copia il vecchio array in quello nuovo
for (unsigned int i = 0; i < 10; ++i)
{
  newArrayOfDouble[i] = arrayOfDouble[i];
}

// cancella il vecchio array
delete[] arrayOfDouble;

// cambia nome al nuovo array
arrayOfDouble = newArrayOfDouble;
E' un po' piu' macchinoso e lento della versione equivalente C, ma e' sicuro che funzioni per ogni tipo di oggetto C++.
Se vuoi una versione piu' concisa puoi usare STL.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 01-03-2005, 12:31   #3
sirus
Senior Member
 
Iscritto dal: Mar 2004
Messaggi: 16053
grazie per le info posso concludere che con il C++ la semplicità è aumentata ma la flessibilità è diminuita a fronte di un minor numero di errori
sirus è offline   Rispondi citando il messaggio o parte di esso
Old 01-03-2005, 13:35   #4
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
ci tengo a precisare che in C++ è ancora possibile utilizzare malloc realloc e free, quindi puoi utilizzare realloc solo se il blocco l'hai allocato con malloc, non con new; in teoria potresti anche con new, ma è meglio di no.
ciao
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 01-03-2005, 13:36   #5
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
ah, ovviamente vale anche per calloc
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 01-03-2005, 14:06   #6
sirus
Senior Member
 
Iscritto dal: Mar 2004
Messaggi: 16053
Quote:
Originariamente inviato da 71104
ci tengo a precisare che in C++ è ancora possibile utilizzare malloc realloc e free, quindi puoi utilizzare realloc solo se il blocco l'hai allocato con malloc, non con new; in teoria potresti anche con new, ma è meglio di no.
ciao
beh questa era ovvio
sirus è offline   Rispondi citando il messaggio o parte di esso
Old 01-03-2005, 15:44   #7
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Oppure usi vector e ti sbatti altamente dell'allocazione...
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless Tastiera gaming MSI GK600 TKL: switch hot-swap, ...
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici DJI Osmo Pocket 4: la gimbal camera tascabile cr...
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori Sony INZONE H6 Air: il primo headset open-back d...
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA Nutanix cambia pelle: dall’iperconvergenza alla ...
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta Recensione Xiaomi Pad 8 Pro: potenza bruta e Hyp...
Il cofondatore di Netflix ha lasciato l'...
ASUS porta in Italia il nuovo Zenbook Du...
Assassin's Creed: Black Flag Resynced, s...
Xbox Game Pass cambierà: tra le n...
I nuovi Surface Pro e Laptop sono vicini...
OnePlus ci riprova con la fascia bassa: ...
La Top 10 delle offerte Amazon del weeke...
XGIMI MoGo 2 Pro a 339€: Google TV con N...
Forum IT & Intelligence 2026: dall'A...
iPhone 16e per la prima volta a meno di ...
Stop Killing Games: Ross Scott convince ...
Annunciata la tuta di volo di Vast che s...
Vast presenta il nuovo Large Docking Ada...
Una denuncia getta ombre sulle batterie ...
DJI Avata 2 Fly Smart Combo a 526€: il d...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 14:01.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v