|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jul 2006
Messaggi: 1069
|
[C] liberare memoria array
saraga se ho un vettore di strutture dikiarato in questa maniera:
pmem array[128]; dv pmem è il tipo della struttura (fatta con il typedef) per eliminare dalla memoria un elemento del vettore ad esempio l'elemento array[56] posso usare la funzione free oppure non essendo un puntatore nn posso farlo? xkè se posso usare la free mi basta scrivere free(&(array[56])) e basta altrimenti nn so come fare... forse dikiarando NULL l'elemento. consigliatemi please ![]()
__________________
desktop: AMD Ryzen7 5700x 8-core skt AM4 - dissipatore Artic Freezer A35 CO- Gigabyte B550-AORUS ELITE ax v2 - DDR4 32GB G.Skill PC 3200- SSD WD_Black NS770 1Tb - HD 1Tb - SAPPHIRE Radeon RX 580 NITRO+ 8 GB GDDR5 - monitor: Asus VS248HR 24" - case: Corsair 200R - alimentatore: XFX PRO650W 80 plus bronze modulare |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
![]() ma pmem come è typedeffato ? se è un array di puntatori puoi fare free(array[56]) se è un array di char o simili non devi liberare proprio niente
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jul 2006
Messaggi: 1069
|
pmem è una struct ke contiene 3 interi e una stringa ma non come vettore di puntatori bensì dichiarato come un normalissimo vettore e cioè:
char* pag[503] io nn ricordo come devo fare a cancellare questa struct e a lasciare come vuota, cioè come quando il vettore era ancora vuoto ![]()
__________________
desktop: AMD Ryzen7 5700x 8-core skt AM4 - dissipatore Artic Freezer A35 CO- Gigabyte B550-AORUS ELITE ax v2 - DDR4 32GB G.Skill PC 3200- SSD WD_Black NS770 1Tb - HD 1Tb - SAPPHIRE Radeon RX 580 NITRO+ 8 GB GDDR5 - monitor: Asus VS248HR 24" - case: Corsair 200R - alimentatore: XFX PRO650W 80 plus bronze modulare |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
![]()
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jul 2006
Messaggi: 1069
|
questa è la struttura:
typedef struct pagMem{ byte pag[503]; long id; time_t data; short block_id:7; }pmem; io ho un vettore di queste strutture e devo fare una funzione ke elimina una struttura dal vettore, in pratica lascia lo spazio di memoria occupato dalla casella del vettore proprio come quando il vettore è stato appena inizializzato
__________________
desktop: AMD Ryzen7 5700x 8-core skt AM4 - dissipatore Artic Freezer A35 CO- Gigabyte B550-AORUS ELITE ax v2 - DDR4 32GB G.Skill PC 3200- SSD WD_Black NS770 1Tb - HD 1Tb - SAPPHIRE Radeon RX 580 NITRO+ 8 GB GDDR5 - monitor: Asus VS248HR 24" - case: Corsair 200R - alimentatore: XFX PRO650W 80 plus bronze modulare |
![]() |
![]() |
![]() |
#6 | |
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
Quote:
E, ovviamente, non puoi usare free per liberare memoria allocata staticamente.
__________________
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 |
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Jul 2006
Messaggi: 1069
|
quel problema l'ho risolto!
![]()
__________________
desktop: AMD Ryzen7 5700x 8-core skt AM4 - dissipatore Artic Freezer A35 CO- Gigabyte B550-AORUS ELITE ax v2 - DDR4 32GB G.Skill PC 3200- SSD WD_Black NS770 1Tb - HD 1Tb - SAPPHIRE Radeon RX 580 NITRO+ 8 GB GDDR5 - monitor: Asus VS248HR 24" - case: Corsair 200R - alimentatore: XFX PRO650W 80 plus bronze modulare |
![]() |
![]() |
![]() |
#8 | |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
![]() ti arrabbi per così poco? guarda che si è visto ben di peggio!! ![]() dai un'occhiata ai post dell'utente $te ![]() una volta l'ho pure cazziato ![]() ![]() |
|
![]() |
![]() |
![]() |
#9 | |
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
Quote:
![]() Devi chiamare free prima sui (puntatori ai) campi della struttura per i quali è prevista un'allocazione dinamica; e poi sul( puntatore al)la struttura. Ad esempio, se hai: Codice:
struct prova { int c; char *name; }; struct prova *p; Codice:
free(p->name); free(p);
__________________
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 Ultima modifica di Ziosilvio : 24-01-2008 alle 19:55. |
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Jul 2006
Messaggi: 1069
|
chi sarebbe Cthulhu?
![]() ![]()
__________________
desktop: AMD Ryzen7 5700x 8-core skt AM4 - dissipatore Artic Freezer A35 CO- Gigabyte B550-AORUS ELITE ax v2 - DDR4 32GB G.Skill PC 3200- SSD WD_Black NS770 1Tb - HD 1Tb - SAPPHIRE Radeon RX 580 NITRO+ 8 GB GDDR5 - monitor: Asus VS248HR 24" - case: Corsair 200R - alimentatore: XFX PRO650W 80 plus bronze modulare |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Il fratello furbo di Ktulu.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Jul 2006
Messaggi: 1069
|
ragazzi sapete se è corretto scrivere una cosa del genere:
int *prova:7; cioè, se uso il bitfield su un puntatore ad intero mi ritrovo un puntatore di 7 bit ad un intero oppure un puntatore ad un intero di 7 bit?
__________________
desktop: AMD Ryzen7 5700x 8-core skt AM4 - dissipatore Artic Freezer A35 CO- Gigabyte B550-AORUS ELITE ax v2 - DDR4 32GB G.Skill PC 3200- SSD WD_Black NS770 1Tb - HD 1Tb - SAPPHIRE Radeon RX 580 NITRO+ 8 GB GDDR5 - monitor: Asus VS248HR 24" - case: Corsair 200R - alimentatore: XFX PRO650W 80 plus bronze modulare |
![]() |
![]() |
![]() |
#13 | |
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
Quote:
![]()
__________________
GPU Compiler Engineer |
|
![]() |
![]() |
![]() |
#14 | ||
Senior Member
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
|
Quote:
Quote:
__________________
![]() |
||
![]() |
![]() |
![]() |
#15 |
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
http://it.wikipedia.org/wiki/Cthulhu
http://nonciclopedia.wikia.com/wiki/Cthulhu http://www.youtube.com/watch?v=WN4XKHusVbo
__________________
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 |
![]() |
![]() |
![]() |
#16 | |
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
![]() Certo che la fantasia non ti manca ![]() puoi solo fare strutture a bit con campi unsigned int (che io sappia) Codice:
struct pippo { unsigned int x : 1; unsigned int y : 3; ... };
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
![]() |
![]() |
![]() |
#17 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
![]() ![]() Che fa ? |
|
![]() |
![]() |
![]() |
#18 | |
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
Se metti : 1 hai un bit, quindi avrai una variabile solo booleana perchè potra contenere o 1 o 0. Con 2 bit avrai 4 valori e così via. è utile per risparmiare memoria ![]() EDIT: dimenticavo, ovviamente la struttura creata non potrà essere di 1 bit, 3 bits o 3 bytes. Sarà sempre allineata in qualche modo ho spiegato una cosa a Cionci !!! ![]()
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
![]() |
![]() |
![]() |
#19 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
E come accedi ai bit ?
|
![]() |
![]() |
![]() |
#20 |
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
semplicemente usando la struttura.campo.
Codice:
struct { unsigned int x : 1; unsigned int y : 3; ... } pippo; pippo.x = 0; pippo.x = 1; pippo.y = 0; pippo.y = 1; pippo.y = 2; pippo.y = 3; pippo.x = 2;
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:52.