Torna indietro   Hardware Upgrade Forum > Software > Programmazione

TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati
La tecnologia SQD-Mini LED di TCL arriva sul taglio da 65 pollici con la serie C8L: 2040 zone, pannello WHVA 2.0 e un picco che alle rilevazioni delle sonde tocca i 4400 nit nel profilo Filmmaker e un HDR quasi perfetto
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro
Wireless 2.4 GHz, Bluetooth 5.4, cancellazione attiva del rumore, design pieghevole e un'autonomia che mette in imbarazzo prodotti che costano il doppio. Le Maestro 500 non eccellono in nulla, ma offrono tutto. E a questo prezzo è difficile chiedere di più
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
Dopo anni di attesa e una lunga fase di sviluppo, Noctua entra nel mercato dei dissipatori a liquido AIO con la nuova serie NL-LC1. Forte dell'esperienza maturata nel raffreddamento ad aria, l'azienda austriaca promette di portare la propria filosofia fatta di qualità costruttiva, attenzione ai dettagli e silenziosità anche in questo segmento. Abbiamo provato il nuovo sistema per scoprire se riesce a distinguersi in un mercato ormai molto competitivo.
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


TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati TCL 65C8L, la recensione del SQD-Mini LED da 440...
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro MSI Maestro 500 Wireless: ANC e 90 ore di autono...
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine NL-LC1 è il primo dissipatore a liquido A...
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con ...
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming Gigabyte MO32U24 OLED: il 4K a 240Hz su un panne...
I lander lunari della missione Artemis I...
SteamOS 3.8 esce dalla beta: supporto pr...
HDMI 2.2 si avvicina: i primi dispositiv...
GTA 6 è sempre più vicino:...
Prima mossa climatica di Anthropic: entr...
Ho scritto un programma da zero con Kimi...
Thermal Grizzly DeltaMate CPU Block: un ...
Il supercomputer più potente al m...
VSCO lancia Studio Pro su iOS: batch edi...
GPT-NL, il modello linguistico olandese ...
Apple Watch SE 3 crolla a 199€: il prezz...
'Non c'è spazio per console econo...
AutoUncle fotografa il mercato dell'usat...
Robase, il malware che ruba interi gioch...
DeepSeek invece di OpenAI in Copilot Cow...
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: 23:11.


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