Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico
Nothing Phone (4a) Pro cambia pelle: l'alluminio unibody sostituisce la trasparenza integrale, portando una solidità inedita. Sotto il cofano troviamo uno Snapdragon 7 Gen 4 che spinge forte, mentre il display è quasi da top dig amma. Con un teleobiettivo 3.5x e la Glyph Matrix evoluta, è la prova di maturità di Carl Pei. C'è qualche compromesso, ma a 499EUR la sostanza hardware e la sua unicità lo rendono un buon "flagship killer" in salsa 2026
WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro
WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro
Con Midnight, Blizzard tenta il colpaccio: il player housing sbarca finalmente su Azeroth insieme a una Quel'Thalas ricostruita da zero. Tra il dramma della famiglia Ventolesto e il nuovo Prey System, ecco com'è la nuova espansione di World of Warcraft
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato
Nuova frontiera per i robot tagliaerba, con Ecovacs GOAT O1200 LiDAR Pro che riconosce l'ambiente in maniera perfetta, grazie a due sensori LiDAR, e dopo la falciatura può anche rifinire il bordo con il tagliabordi a filo integrato
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-11-2010, 22:19   #1
lefantome
Member
 
Iscritto dal: Dec 2007
Messaggi: 284
[C] Problemino doppio puntatore

Purtroppo sono morto e non riesco a trovare l'errore anche perché se gli do la via io mi funziona ma tramite script bash utilizzato per il test mi incappa in un errore.

Allora ho queste strutture banali:

(Versione a Colori su pastebin: http://pastebin.com/xkDcaxkf )

AGGIORNAMENTO: valgrind mi da "invalid read of size 4" soltanto appena accede all'ultima table[i] con i =size-1, poi comunque se lo richiedo, mi stampa gli elementi di table[size-1]. Pazzesco! O.o
Potrei avere allocato male la memoria da qualche parte?:look:

Lista
Codice:
typedef struct {
  /** la testa della lista */
  elem_t * head;
  /** la funzione per confrontare due chiavi */
  int (* compare) (void *, void *);
  /** la funzione per copiare una chiave */
  void * (* copyk) (void *);
  /** la funzione per copiare un payload*/
  void * (* copyp) (void *);
} list_t;
Tabella Hash
Codice:
typedef struct {
  /** la tabella hash */
  list_t ** table;
  /** l'ampiezza della tabella */
  unsigned int size;
  /** la funzione per confrontare due chiavi */
  int (* compare) (void *, void *);
  /** la funzione per copiare una chiave */
  void * (* copyk) (void *);
  /** la funzione per copiare un payload*/
  void * (* copyp) (void *);
  /** la funzione hash*/
  unsigned int (* hash) (void *,unsigned int);
} hashTable_t;
Qui é come istanzio la tabella hash:
Codice:
hashTable_t * new_hashTable (unsigned int size,  /*puntatori a funzione vari/*){

hashTable_t* t;
int i;

/* alloca una struct hashTable_t */
t = (hashTable_t*)malloc(sizeof(hashTable_t));
if (t == NULL){ return NULL;} /* ritorna NULL se malloc fallisce SETTARE ERNO*/

/* alloca lo spazio necessario per tutto l'array di liste */
t->size = size;
t->table = (list_t **) malloc(size * sizeof(list_t *) );
if (t->table == NULL){ return NULL;} /* ritorna NULL se malloc fallisce SETTARE ERNO*/

/* setta tutte le liste inizialmente a null */
   for(i=0; i <t->size; i++) {
	      t->table[i]  = NULL;
	}

/*funzioni puntate */
}
Questa é l'algoritmo che funziona ma nel quale valgrind vede problemi e non fa tramite script bash.
Mi da errore direttamente nel primo ciclo for.
Codice:
int msgList(hashTable_t* hs, char** s){

char*t = NULL; 
char*u = NULL;
list_t* p;
elem_t *q;
int i =0;
int slen=0;

*s = (char*)malloc(sizeof(char)*6+1);
strcpy(*s,"[list]");

Ora hs->table[i] può essere ==NULL ma non accendo a niente se lo é eppure di midce che ho una lettura non valida di taglia 4 :fermosi:

for(p = hs->table[i];i < hs->size;p = hs->table[i])
{
	if(p != NULL)
	{ if( p->head != NULL)
	{
		for(q = p->head;q !=NULL;q=q->next)
		{
			int* c= q->payload;
			if ( *c !=-1)
			{
			t = (char*)malloc(sizeof(char)*slen+sizeof(char)*strlen(q->key)+2);
			if(u != NULL)
				{

Ultima modifica di lefantome : 22-11-2010 alle 22:56.
lefantome è offline   Rispondi citando il messaggio o parte di esso
Old 22-11-2010, 22:58   #2
lefantome
Member
 
Iscritto dal: Dec 2007
Messaggi: 284
L'output stampando la tabella hash:
Quote:
Lista [0]
topolino:-1
Lista [1]
pippo:4
Lista [2]
paperino:-1
Lista [3]
zenZero:-1 PaPeRino45:-1 plut0:-1 PIPPO:-1 pluto:-1
Lista [4]
==10480== Thread 3:
==10480== Invalid read of size 4
==10480== at 0x8049D2C: msgList (serverut.c:229)
==10480== by 0x8048D02: worker (msgserv.c:92)
==10480== by 0x404296D: start_thread (pthread_create.c:300)
==10480== by 0x4124A4D: clone (clone.S:130)
==10480== Address 0x41b21f4 is 0 bytes after a block of size 20 alloc'd
==10480== at 0x4024F20: malloc (vg_replace_malloc.c:236)
==10480== by 0x804A393: new_hashTable (genHash.c:36)
==10480== by 0x8049A53: createHashTable (serverut.c:162)
==10480== by 0x804905A: main (msgserv.c:216)
==10480==
minnie:-1


Cmq ho debuggato con code blocks e non da errori, non so più cosa fare :fermosi:


Ho notato che questo "errore si presenta su valgrind e nel test della prof solo alla prima esecuzione delle funzione incriminata.

Se la rieseguo per lo stesso client o per altri client connessi contemporaneamente non ho più lo stesso problema

Ultima modifica di lefantome : 23-11-2010 alle 00:29.
lefantome è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico Recensione Nothing Phone (4a) Pro: finalmente in...
WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro WoW: Midnight, Blizzard mette il primo, storico ...
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato Ecovacs Goat O1200 LiDAR Pro: la prova del robot...
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere? Recensione Samsung Galaxy S26+: sfida l'Ultra, m...
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti Zeekr X e 7X provate: prezzi, autonomia fino a 6...
899 dollari per il nuovo Ryzen: AMD alza...
WhatsApp avrà canali a pagamento: ecco c...
Roscosmos aggiorna le tempistiche per la...
Confermato il ritardo delle missioni rob...
L'Intelligenza Artificiale ora può...
Il data center del futuro secondo Huawei...
Spesa a domicilio senza conducente: robo...
Satoshi Nakamoto ha finalmente un volto?...
La Corea del Sud taglia fuori i bus elet...
GoPro taglia ancora: licenziato il 23% d...
Muse S Athena: la fascia che ti legge ne...
PS5 Pro e PSSR 2.0: tutti i giochi compa...
Dimensity 9600 Pro promette prestazioni ...
BMW i7 2026 adotta celle cilindriche Gen...
Cyberpunk 2077 si aggiorna su PS5 Pro co...
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:25.


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