Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 03-11-2006, 09:46   #1
Starise
Senior Member
 
L'Avatar di Starise
 
Iscritto dal: Oct 2000
Città: Napoli
Messaggi: 984
[C] Realloc: Segmentation Fault

Ragazzi, ho un grave problema, sicuramente facile da identificare, ma io non ci riesco! Un programma che sto scrivendo mi va in seg.fault!

L'allocazione avviene tramite questa funzione:
Codice:
int Alloca_Memoria( CONTATTI **Ptr, int dim )
{
	CONTATTI *Nuovo_Ptr = NULL; /* nuovo puntatore... */
	/* ...che contiene il risultato della chiamata a realloc */
	Nuovo_Ptr = ( CONTATTI * )realloc( *Ptr, dim * sizeof( CONTATTI ) );

	if( Nuovo_Ptr == NULL )
	{
		/* realloc restituendo NULL ci avvisa che non c'e' memoria disponibile
		 * per allocare lo spazio richiesto */
		return (0);
	}
	else
	{
		/* l'allocazione ha avuto successo e si utilizza il nuovo indirizzo
		 * di memoria che contiene lo spazio necessario */
		Pausa();
		*Ptr = Nuovo_Ptr;
		return (1);
	}
}
Quando ci vado a scrivere:

Codice:
void Aggiungi_Contatto( CONTATTI **Rubrica, int *num_contatti )
{
	/* per lavorare sul numero dei contatti presenti in rubrica */
	int chiave = *num_contatti;
	
	/* se Alloca_Memoria restituisce 1 */
	if( Alloca_Memoria( Rubrica, chiave + 1 ) )
	{
		/* inserisci Contatto */
		Menu_Aggiungi_Contatto();
		/* assegnazione ID */
		Rubrica[chiave]->ID = chiave;
		
		SVUOTA_STDIN;
		printf( "Inserisci il nome: " );
		Inserisci_Stringa( Rubrica[chiave]->Nome );
		printf( "Inserisci il cognome: " );
		Inserisci_Stringa( Rubrica[chiave]->Cognome );
		
		chiave++;
		*num_contatti = chiave;
		Pausa();
	}
	else
	{
		printf("Impossibile aggiungere il contatto! Memoria non disponibile.\n");
		Pausa();
	}
		
}
La prima volta, quando (chiave == 0), la procedura funziona senza errori, appena si vuole scrivere un secondo contatto (chiave == 1) - sulla riga che ho evidenziato in grassetto, il programma va in Seg.Fault!

La cosa... (Gravissima) è che non riesco a capire il perchè!
__________________
Workstation: CPU AMD Ryzen 5900X @ 4950 MHz | RAM Corsair DDR4 64GB @ 3.6GHz | MoBo Gigabyte B550 AORUS Pro V2 | NVMe 1TB ~ WD Black SN850 | Storage 20 TB ~ HGST 7200RPM | PSU Fractal Ion+ 2 860W | GPU Radeon RX 9070 XT + RTX 4070 Super | Mouse Logitech G Pro | Tastiera Logitech G915 TKL -- Audio/Video: AVR Denon X1300W 4K | Interfaccia audio Steinberg UR22 MKII | Casse 2x Klipsch RP-160M | Cuffie Sennheiser HD 650 | B&W Px7 S3 | Mic Oktava MK 012 Black | Display LG OLED 48" @ 2160p 120Hz
Starise è offline   Rispondi citando il messaggio o parte di esso
Old 03-11-2006, 09:57   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da Starise
Codice:
Rubrica[chiave]->ID = chiave;
(*Rubrica)[chiave].ID = chiave;
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 03-11-2006, 10:29   #3
Starise
Senior Member
 
L'Avatar di Starise
 
Iscritto dal: Oct 2000
Città: Napoli
Messaggi: 984
Quote:
Originariamente inviato da andbin
(*Rubrica)[chiave].ID = chiave;
Grande! Funziona... il problema è che non capisco perchè usando la freccetta (->) non va!
__________________
Workstation: CPU AMD Ryzen 5900X @ 4950 MHz | RAM Corsair DDR4 64GB @ 3.6GHz | MoBo Gigabyte B550 AORUS Pro V2 | NVMe 1TB ~ WD Black SN850 | Storage 20 TB ~ HGST 7200RPM | PSU Fractal Ion+ 2 860W | GPU Radeon RX 9070 XT + RTX 4070 Super | Mouse Logitech G Pro | Tastiera Logitech G915 TKL -- Audio/Video: AVR Denon X1300W 4K | Interfaccia audio Steinberg UR22 MKII | Casse 2x Klipsch RP-160M | Cuffie Sennheiser HD 650 | B&W Px7 S3 | Mic Oktava MK 012 Black | Display LG OLED 48" @ 2160p 120Hz
Starise è offline   Rispondi citando il messaggio o parte di esso
Old 03-11-2006, 10:48   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da Starise
Grande! Funziona... il problema è che non capisco perchè usando la freccetta (->) non va!
Il problema non è tanto nella freccetta. Te lo spiego meglio:

Supponiamo che tu con malloc/realloc, allochi un certo numero di CONTATTI.
Codice:
+---------+
|         |  1000
+---------+
|         |  1010
+---------+
|         |  1020
+---------+
    ....
Non so quanto è grande CONTATTI, supponiamo 10. Nel mio esempio i contatti partono dall'indirizzo 1000.

Poi hai una variabile che tiene il puntatore a questi contatti, per esempio:
Codice:
+---------+
|  1000   |  2000
+---------+
Tu alla funzione Aggiungi_Contatto passi 2000, cioè l'indirizzo della variabile che tiene il puntatore ai contatti.
Quindi devi "indicizzare" il puntatore ai contatti che è (*Rubrica)[i] e non Rubrica[i]

Facendo ad esempio Rubrica[1], tu prenderesti il contenuto della cella all'indirizzo 2004. Cosa sbagliata, ovviamente.


EDIT Aggiungo questo: se ti chiedi perchè tu hai usato '->' mentre io il punto '.' è semplice. Rubrica[i] è un puntatore (hai dereferenziato solo 1 volta Rubrica) mentre (*Rubrica)[i] è già la struttura CONTATTI (ho dereferenziato 2 volte Rubrica) e quindi ci vuole il punto.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet

Ultima modifica di andbin : 03-11-2006 alle 11:10.
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 03-11-2006, 16:48   #5
Starise
Senior Member
 
L'Avatar di Starise
 
Iscritto dal: Oct 2000
Città: Napoli
Messaggi: 984
Grazie per le risposta, sei stato chiarissimo!
__________________
Workstation: CPU AMD Ryzen 5900X @ 4950 MHz | RAM Corsair DDR4 64GB @ 3.6GHz | MoBo Gigabyte B550 AORUS Pro V2 | NVMe 1TB ~ WD Black SN850 | Storage 20 TB ~ HGST 7200RPM | PSU Fractal Ion+ 2 860W | GPU Radeon RX 9070 XT + RTX 4070 Super | Mouse Logitech G Pro | Tastiera Logitech G915 TKL -- Audio/Video: AVR Denon X1300W 4K | Interfaccia audio Steinberg UR22 MKII | Casse 2x Klipsch RP-160M | Cuffie Sennheiser HD 650 | B&W Px7 S3 | Mic Oktava MK 012 Black | Display LG OLED 48" @ 2160p 120Hz
Starise è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
YouTube, risolto un bug che impediva il ...
Huawei accelera sui chip AI: Ascend 960D...
Claude si arricchisce con nuove funzioni...
Oggi costa 34,99€ la friggitrice ad aria...
Finalmente sotto i 500€ un bel portatile...
Scende ancora di più il compresso...
Space Pioneer starebbe realizzando un pr...
SpaceX ritirerà ''a breve'' il Fa...
La Luna ha un nuovo cratere di grandi di...
ROG Cronox: ASUS alza l'asticella dei ca...
Lenovo annuncia nuovi sistemi per la vir...
M6 e M5 Ultra, i primi benchmark conferm...
La nuova falla della cybersecurity &egra...
The Blood of Dawnwalker, il sequel potre...
Colpiti i data center Amazon: irrecupera...
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: 07:47.


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