Torna indietro   Hardware Upgrade Forum > Software > Programmazione

ASUS ROG Kithara: quando HIFIMAN incontra il gaming con driver planari da 100mm
ASUS ROG Kithara: quando HIFIMAN incontra il gaming con driver planari da 100mm
ASUS e HIFIMAN uniscono le forze per creare ROG Kithara, cuffie gaming con driver magnetici planari da 100mm, design open-back e microfono MEMS full-band. Una proposta che ambisce a coniugare fedeltà per audiofili e performance ludiche, disponibili a 319 euro
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Qrevo Curv 2 Flow è l'ultima novità di casa Roborock per la pulizia di casa: un robot completo, forte di un sistema di lavaggio dei pavimenti basato su rullo che si estende a seguire il profilo delle pareti abbinato ad un potente motore di aspirazione con doppia spazzola laterale
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Abbiamo guidato per diversi giorni la Alpine A290, la prima elettrica del nuovo corso della marca. Non è solo una Renault 5 sotto steroidi, ha una sua identità e vuole farsi guidare
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-06-2010, 16:14   #1
lupoxxx87
Senior Member
 
Iscritto dal: Jul 2009
Città: Varès
Messaggi: 658
[C] allocazione di memoria...

buongiorno a tutti...

vorrei porre una domanda particolare ai guru del C
(ps: fero86 non dire che è un thread inutile perchè il C ti fa pena xD)

riuscite a spiegarmi perchè un allocazione di memoria siffatta mi dia segmentation fault ?

Codice:
#include <stdio.h>
#include <stdlib.h>

void crea (int *vettore, int dim) {
	vettore = calloc (dim, sizeof(int));
	vettore[3] = 5;
}

int main() {
	int i, dim = 5;
	int *vettore = NULL;
	crea (vettore, dim);
	
	for (i = 0; i < 5; i++) {
		printf ("elemento %d: %d\n", i, vettore[i]);
	}
}

dite che dovrei mettere un this.vettore all'interno di crea ? xD xD
__________________
Quote:
Originariamente inviato da piccolino Guarda i messaggi
l'html si può considerare benissimo un linguaggio di programmazione web. se vogliamo dirla tutta anche css... è come programmare in c++
lupoxxx87 è offline   Rispondi citando il messaggio o parte di esso
Old 09-06-2010, 16:39   #2
lupoxxx87
Senior Member
 
Iscritto dal: Jul 2009
Città: Varès
Messaggi: 658
mi autorispondo:

a chi potesse interessare....

nella chiamata di funzione, viene creata una copia locale del valore del puntatore, ovvero viene creata una variabile locale nel record di attivazione che punta alla stessa area di memoria.

quindi la soluzione che stavo cercando dovrebbe essere

Codice:
#include <stdio.h>
#include <stdlib.h>

void crea (int **vettore, int dim) {
	*vettore = calloc (dim, sizeof(int));
	(*vettore)[3] = 5;
}

int main() {
	int i, dim = 5;
	int *vettore = NULL;
	crea (&vettore, dim);
	
	for (i = 0; i < 5; i++) {
		printf ("elemento %d: %d\n", i, vettore[i]);
	}
}
__________________
Quote:
Originariamente inviato da piccolino Guarda i messaggi
l'html si può considerare benissimo un linguaggio di programmazione web. se vogliamo dirla tutta anche css... è come programmare in c++
lupoxxx87 è offline   Rispondi citando il messaggio o parte di esso
Old 09-06-2010, 17:07   #3
Kenger
Member
 
Iscritto dal: Aug 2005
Messaggi: 168
Risposta perfetta
Kenger è offline   Rispondi citando il messaggio o parte di esso
Old 09-06-2010, 17:26   #4
Teo@Unix
Senior Member
 
L'Avatar di Teo@Unix
 
Iscritto dal: Mar 2009
Messaggi: 753
Quote:
a chi potesse interessare....
traduzione passaggio puntatore:

Codice:
0x0804843f <main+27>:   mov    %eax,0x4(%esp)
0x08048443 <main+31>:   lea    -0x10(%ebp),%eax << ---- 
0x08048446 <main+34>:   mov    %eax,(%esp)
0x08048449 <main+37>:   call   0x80483f4 <crea>
traduzione passaggio della copia:

Codice:
0x08048439 <main+27>:   mov    %eax,0x4(%esp)
0x0804843d <main+31>:   mov    -0x10(%ebp),%eax << ----
0x08048440 <main+34>:   mov    %eax,(%esp)
0x08048443 <main+37>:   call   0x80483f4 <crea>
L'indirizzo è univoco. Pertanto SIGSEGV è corretto.
Quindi se non sbaglio lea non sposta l'indirizzo ma l'effettivo contenuto, ovvero l'indirizzo di 'vettore'.

C is powerful!
grazie, lupoxxx87
Teo@Unix è offline   Rispondi citando il messaggio o parte di esso
Old 10-06-2010, 00:00   #5
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da lupoxxx87 Guarda i messaggi
(ps: fero86 non dire che è un thread inutile perchè il C ti fa pena xD)
OMG ha creato una fobia!

Comunque, la tua autorisposta è corretta, ma ricorda di fare una free() per ogni allocazione...
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 10-06-2010, 00:06   #6
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da Teo@Unix Guarda i messaggi
Quindi se non sbaglio lea non sposta l'indirizzo ma l'effettivo contenuto, ovvero l'indirizzo di 'vettore'.
Per l'esattezza fa il contrario, cioè invece di spostare il contenuto sposta l'indirizzo (il contenuto è un int *, l'indirizzo sarà un int **).

ciao
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 10-06-2010, 14:05   #7
Teo@Unix
Senior Member
 
L'Avatar di Teo@Unix
 
Iscritto dal: Mar 2009
Messaggi: 753
Quote:
Originariamente inviato da DanieleC88 Guarda i messaggi
Per l'esattezza fa il contrario, cioè invece di spostare il contenuto sposta l'indirizzo (il contenuto è un int *, l'indirizzo sarà un int **).

ciao
si, scusa ho confuso....
Teo@Unix è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


ASUS ROG Kithara: quando HIFIMAN incontra il gaming con driver planari da 100mm ASUS ROG Kithara: quando HIFIMAN incontra il gam...
Roborock Qrevo Curv 2 Flow: ora lava con un rullo Roborock Qrevo Curv 2 Flow: ora lava con un rull...
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite Alpine A290 alla prova: un'auto bella che ti fa ...
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile Recensione HONOR Magic 8 Lite: lo smartphone ind...
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Microsoft Highlight Reels: clip e montag...
Una nuova partnership per i TV Panasonic...
NIO batte il suo record di scambio batte...
Verona ha i bus del futuro: 34 mezzi ele...
Changan risponde presente: batterie allo...
Creatore di Telegram accusato di terrori...
Microsoft prepara molte novità le...
Alcolock obbligatorio da oggi: ecco chi ...
Intel Unified Core: un annuncio di lavor...
Nikon rinnova il suo telezoom profession...
Ci sarà una nuova serie di Evange...
ESA Space Rider: superato un test per lo...
Horse e Repsol hanno costruito il protot...
Beats Solo 4 a 111€: le iconiche cuffie ...
IBM crolla in Borsa (-13%) dopo l'annunc...
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: 22:42.


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