Torna indietro   Hardware Upgrade Forum > Software > Programmazione

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.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
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'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-06-2003, 13:52   #1
alderighi
Senior Member
 
L'Avatar di alderighi
 
Iscritto dal: Sep 2002
Città: vinci-spicchio
Messaggi: 530
assegnazione indirizzo a un puntatore

Con dei miei amici dopo aver fatto i puntatori in C a scuola abbiamo pensato di fare un programma che scancellasse casualmente parti di memoria ram, volendo vedere come si comportava un computer e volendo fare degli scherzi .

Il codice è questo:

# include <conio.h>
# include <stdio.h>
# include <string.h>
# include <iostream.h>
# include <dos.h>
# include <stdlib.h>
//Alderighi Matteo III A inf
int tempo,*p,n=0;
void main()
{
printf("Dammi ogni quanti secondi vuoi pulire la ram? ");
scanf("%d",&tempo);
clrscr();
printf("Pulitura casuale della ram ogni %d secondi",tempo);
randomize();
for(p=0000;n<1000;(p=p+random(10000)),n++)
{
printf("\nPulitura casuale %d, indirizzo %x",n,p);
free(p);
sleep(tempo);
}
getch();
}
Qual'è la sintassi, il modo, l'operatore logico per assegnare un indirizzo digitato da tastiera o messo da me nel codice a mano ad un puntatore,
ho provato con p=9000 ma non funziona, funziona solo p=0 .
Aiutatemi!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
__________________
Intel Pentium DualCore E2140 1,60 GHz , Asus P5LD2 R2.0,Sapphire x600xt 128Mb,hauppauge winTV,2x256Mb Ddr2 Vitesta 533Mhz,western digital caviar 160gb, seagate 20gb 5400giri, maxtor 40gb 7200giri, dvd+-rw gigabyte(BTC) 4x,Samsung writemaster dvd duallayer 18x , edimax wireless<-->router D-link G604T.
alderighi è offline   Rispondi citando il messaggio o parte di esso
Old 08-06-2003, 14:00   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Prova così:

char *p = (char *)9000;
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 08-06-2003, 14:29   #3
alderighi
Senior Member
 
L'Avatar di alderighi
 
Iscritto dal: Sep 2002
Città: vinci-spicchio
Messaggi: 530
grazie dell'aiuto ora funziona, non miera venuto in mente di fare il cast.
__________________
Intel Pentium DualCore E2140 1,60 GHz , Asus P5LD2 R2.0,Sapphire x600xt 128Mb,hauppauge winTV,2x256Mb Ddr2 Vitesta 533Mhz,western digital caviar 160gb, seagate 20gb 5400giri, maxtor 40gb 7200giri, dvd+-rw gigabyte(BTC) 4x,Samsung writemaster dvd duallayer 18x , edimax wireless<-->router D-link G604T.
alderighi è offline   Rispondi citando il messaggio o parte di esso
Old 08-06-2003, 19:02   #4
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Re: assegnazione indirizzo a un puntatore

Quote:
Originally posted by "alderighi"

Con dei miei amici dopo aver fatto i puntatori in C a scuola abbiamo pensato di fare un programma che scancellasse casualmente parti di memoria ram, volendo vedere come si comportava un computer e volendo fare degli scherzi .

Il codice è questo:

# include &lt;conio.h&gt;
# include &lt;stdio.h&gt;
# include &lt;string.h&gt;
# include &lt;iostream.h&gt;
# include &lt;dos.h&gt;
# include &lt;stdlib.h&gt;
//Alderighi Matteo III A inf
int tempo,*p,n=0;
void main()
{
printf("Dammi ogni quanti secondi vuoi pulire la ram? ");
scanf("%d",&amp;tempo);
clrscr();
printf("Pulitura casuale della ram ogni %d secondi",tempo);
randomize();
for(p=0000;n&lt;1000;(p=p+random(10000)),n++)
{
printf("\nPulitura casuale %d, indirizzo %x",n,p);
free(p);
sleep(tempo);
}
getch();
}
Qual'è la sintassi, il modo, l'operatore logico per assegnare un indirizzo digitato da tastiera o messo da me nel codice a mano ad un puntatore,
ho provato con p=9000 ma non funziona, funziona solo p=0 .
Aiutatemi!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Scusa eh, non per qualcosa, ma questo è un programma concettualmente totalmente sbagliato.
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 09-06-2003, 17:51   #5
mattomatt
Member
 
Iscritto dal: Dec 2002
Messaggi: 122
Concordo completamente con mjordan.
aggiungo che non conosco il verbo "scancellare" e che con il c si possono fare scherzi mooooolto più simpatici ma è meglio nn farli!
mattomatt è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2003, 14:04   #6
alderighi
Senior Member
 
L'Avatar di alderighi
 
Iscritto dal: Sep 2002
Città: vinci-spicchio
Messaggi: 530
Sono disposto ad accettare consigli ( lo so che si poteva agire anche suul'hrad-disk scancellando dati ma non mi interessa ), non capisco tutto questo accanimento contro il mio povero programma che funziona a dovere e concettualmente ho usato le regole basilari.
Comunque se volete dare qualche consiglio , anzi perchè non postate un vostro programma fatto da voi visto che siete tanto esperti e bravi ?!?!?!

Il verbo scancellare è usato moltissimo in Toscana e come si sa il l'italiano deriva dal toscano, inoltre se in un forum uno deve stare attento a tutto e non può scrivere come qli pare, inoltre ho visto gente scrivere molto peggio e usare verbi inesistenti.

Inoltre riporto da vocabolario:
scancellare=Forma intensiva e più espressiva di cancellare.
__________________
Intel Pentium DualCore E2140 1,60 GHz , Asus P5LD2 R2.0,Sapphire x600xt 128Mb,hauppauge winTV,2x256Mb Ddr2 Vitesta 533Mhz,western digital caviar 160gb, seagate 20gb 5400giri, maxtor 40gb 7200giri, dvd+-rw gigabyte(BTC) 4x,Samsung writemaster dvd duallayer 18x , edimax wireless<-->router D-link G604T.
alderighi è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2003, 15:19   #7
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Semplicemente perchè la free non libera la memoria...ma solamente dealloca uno spazio di memoria allocato dal programma stesso...i valori rimangono comunque lì anche dopo la free...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2003, 15:58   #8
lombardp
Senior Member
 
L'Avatar di lombardp
 
Iscritto dal: Jun 2002
Città: Firenze
Messaggi: 630
Quote:
Originally posted by "cionci"

Semplicemente perchè la free non libera la memoria...ma solamente dealloca uno spazio di memoria allocato dal programma stesso...i valori rimangono comunque lì anche dopo la free...
Si, infatti. La FREE del programma semplicemente non ha alcun effetto. Se poi si è nel caso di sistema operativo con memoria protetta, anche se funzionasse, potrebbe solo deallocare la propria memoria, non certo quella di altri programmi.
__________________
---> Lombardp
CSS Certified Expert (Master Level) at Experts-Exchange
Proud user of LITHIUM forum : CPU technology
Webmaster of SEVEN-SEGMENTS : Elettronica per modellismo
lombardp è offline   Rispondi citando il messaggio o parte di esso
Old 12-06-2003, 07:31   #9
alderighi
Senior Member
 
L'Avatar di alderighi
 
Iscritto dal: Sep 2002
Città: vinci-spicchio
Messaggi: 530
Ho capito, grazie!
Quando avvio il programma dopo un po' mi da due o tre errori,
per esempio:
PUNTARAM ha provocato un errore di pagina non valida nel
modulo PUNTARAM.EXE in 01a7:00409e9a.
Registri:
EAX=fffffffe CS=01a7 EIP=00409e9a EFLGS=00010282
EBX=0040e9d8 SS=01af ESP=0064fde8 EBP=0064fdec
ECX=0064f888 DS=01af ESI=0040c100 FS=1aa7
EDX=bffc9490 ES=01af EDI=0040c104 GS=0000
Byte all'indirizzo CS:EIP:
8b 08 f6 c1 02 74 33 8b d0 2b 50 fc 83 e1 fc 83
Immagine dello stack:
0040e9d8 0064fe04 0040119a 00000002 00000000 0040c0b8 00000000 0064fe30 0040b451 00000001 006621a4 006623a4 00000000 8189b4d4 00540000 00000000
__________________
Intel Pentium DualCore E2140 1,60 GHz , Asus P5LD2 R2.0,Sapphire x600xt 128Mb,hauppauge winTV,2x256Mb Ddr2 Vitesta 533Mhz,western digital caviar 160gb, seagate 20gb 5400giri, maxtor 40gb 7200giri, dvd+-rw gigabyte(BTC) 4x,Samsung writemaster dvd duallayer 18x , edimax wireless<-->router D-link G604T.
alderighi è offline   Rispondi citando il messaggio o parte di esso
Old 12-06-2003, 08:20   #10
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Quote:
Originally posted by "alderighi"

Ho capito, grazie!
Quando avvio il programma dopo un po' mi da due o tre errori,
per esempio:
PUNTARAM ha provocato un errore di pagina non valida nel
modulo PUNTARAM.EXE in 01a7:00409e9a.
Registri:
EAX=fffffffe CS=01a7 EIP=00409e9a EFLGS=00010282
EBX=0040e9d8 SS=01af ESP=0064fde8 EBP=0064fdec
ECX=0064f888 DS=01af ESI=0040c100 FS=1aa7
EDX=bffc9490 ES=01af EDI=0040c104 GS=0000
Byte all'indirizzo CS:EIP:
8b 08 f6 c1 02 74 33 8b d0 2b 50 fc 83 e1 fc 83
Immagine dello stack:
0040e9d8 0064fe04 0040119a 00000002 00000000 0040c0b8 00000000 0064fe30 0040b451 00000001 006621a4 006623a4 00000000 8189b4d4 00540000 00000000
Appunto e' totalmente sbagliato. In questo programma esistono 4 violazioni. Prima: La memoria va allocata con malloc, realloc o calloc prima di chiamare free(). free() non cancella, dealloca. Per deallocare, bisogna allocare.

Seconda: Generare un indirizzo random ti porta a puntare in uno spazio di memoria al di fuori di quella assegnata dal sistema operativo. Quello che in Windows ti dice pagina non valida, sotto Unix si chiama errore di segmentazione.

Terza: Nel caso i puntatori non causino un segfault puntando al di fuori della memoria allocata dal sistema operativo per il tuo programma, essi sicuramente cancelleranno locazioni di memoria contenenti indirizzi del programma stesso, causando un'autocorruzione.

Quarta: Non puoi danneggiare nessun hard disk in questo modo.

In sostanza, non è che sei arrivato tu a scrivere un garbage collector in 10 righe di codice

mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 12-06-2003, 14:11   #11
alderighi
Senior Member
 
L'Avatar di alderighi
 
Iscritto dal: Sep 2002
Città: vinci-spicchio
Messaggi: 530
Lo so che in questo modo non si può scancellare nulla dall'hardisk, ma mi riferivo al tuo riferimento di scherzi più belli e pesanti, per fare un programma così bisognerebbe adoprare l'assembler comunque vorrei senza tanti casini fare un programma semplice che ha lo scopo di cancellare parti di ram a caso anche di altri programmi quindi la malloc non serve a nulla(è inutile scancellare un'area da noi allocata non creerà nessun errore), il programma funziona solo che non riesce a scancellare perchè windows interviene prima dando un errore e io che ci posso fare,
se sapete altri modi per scancellare parti di ram allocte da altri programmi senza che windows intervenga ditemelo.
__________________
Intel Pentium DualCore E2140 1,60 GHz , Asus P5LD2 R2.0,Sapphire x600xt 128Mb,hauppauge winTV,2x256Mb Ddr2 Vitesta 533Mhz,western digital caviar 160gb, seagate 20gb 5400giri, maxtor 40gb 7200giri, dvd+-rw gigabyte(BTC) 4x,Samsung writemaster dvd duallayer 18x , edimax wireless<-->router D-link G604T.
alderighi è offline   Rispondi citando il messaggio o parte di esso
Old 12-06-2003, 14:13   #12
alderighi
Senior Member
 
L'Avatar di alderighi
 
Iscritto dal: Sep 2002
Città: vinci-spicchio
Messaggi: 530
Lo so che in questo modo non si può scancellare nulla dall'hardisk, ma mi riferivo al tuo riferimento di scherzi più belli e pesanti, per fare un programma così bisognerebbe adoprare l'assembler comunque vorrei senza tanti casini fare un programma semplice che ha lo scopo di cancellare parti di ram a caso anche di altri programmi quindi la malloc non serve a nulla(è inutile scancellare un'area da noi allocata non creerà nessun errore), il programma funziona solo che non riesce a scancellare perchè windows interviene prima dando un errore e io che ci posso fare,
se sapete altri modi per scancellare parti di ram allocte da altri programmi senza che windows intervenga ditemelo.
__________________
Intel Pentium DualCore E2140 1,60 GHz , Asus P5LD2 R2.0,Sapphire x600xt 128Mb,hauppauge winTV,2x256Mb Ddr2 Vitesta 533Mhz,western digital caviar 160gb, seagate 20gb 5400giri, maxtor 40gb 7200giri, dvd+-rw gigabyte(BTC) 4x,Samsung writemaster dvd duallayer 18x , edimax wireless<-->router D-link G604T.
alderighi è offline   Rispondi citando il messaggio o parte di esso
Old 12-06-2003, 15:33   #13
lombardp
Senior Member
 
L'Avatar di lombardp
 
Iscritto dal: Jun 2002
Città: Firenze
Messaggi: 630
Quote:
Originally posted by "alderighi"

il programma funziona solo che non riesce a scancellare perchè windows interviene prima dando un errore e io che ci posso fare,
se sapete altri modi per scancellare parti di ram allocte da altri programmi senza che windows intervenga ditemelo.
Quello che volevano e volevo cercare di dirti è che il programma non ha proprio fondamento logico. Windows (ma anche gli altri OS) gestisce ogni applicazione in una vera e propria scatola chiusa (memoria protetta), nel senso che ciascuna applicazione ha "virtualmente" tutta la memoria a disposizione e con tutta dico proprio tutta nel senso che può allocare in tutto lo spazio di indirizzamento teorico. Sarà poi il sistema operativo a "tradurre" l'indirizzo virtuale in quello fisico, secondo i suoi bisogni e in linea di principio variandolo a piacimento in modo trasparente durante l'utilizzo.

Quindi la locazione di memoria 13'456'721 dell'applicazione "pippo" NON COINCIDERA' MAI con la locazione 13'456'721 dell'applicazione "pluto" perché le due locazioni inizialmente identiche sono SEMPRE tradotte in locazioni fisiche DIVERSE.

Per accedere alla memoria di altri processi devi sostanzialmente eseguire codice a livello di kernel, come certi driver di basso livello.
__________________
---> Lombardp
CSS Certified Expert (Master Level) at Experts-Exchange
Proud user of LITHIUM forum : CPU technology
Webmaster of SEVEN-SEGMENTS : Elettronica per modellismo
lombardp è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


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...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Dopo 23 anni di silenzio, Warcraft 3 spi...
Roblox sfida l'ecosistema gaming: app st...
OpenAI accusata di plagio dai migliori m...
Altro attacco hacker dell'IA: gli agenti...
Stiamo davvero perdendo il controllo del...
Microsoft perde un pilastro: Frank Shaw ...
Diablo V annunciato a sorpresa: il colpo...
Meno di 5 euro per il 5G: l'offerta Kena...
World of Warcraft: Forever è il Classic+...
La Serie A con DAZN e Amazon Prime con l...
Giochi Ubisoft su Steam senza Ubisoft Co...
Miami Beach ha autorizzato la maxi opera...
Apple regala un altro anno di funzioni s...
Alla fine è successo davvero: Vol...
Il meglio di Amazon del weekend in uno s...
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: 15:57.


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