|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
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. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Prova così:
char *p = (char *)9000; |
|
|
|
|
|
#3 |
|
Senior Member
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. |
|
|
|
|
|
#4 | |
|
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
Re: assegnazione indirizzo a un puntatore
Quote:
|
|
|
|
|
|
|
#5 |
|
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 |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Sep 2002
Città: vinci-spicchio
Messaggi: 530
|
Sono disposto ad accettare consigli (
Comunque se volete dare qualche consiglio 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. |
|
|
|
|
|
#7 |
|
Senior Member
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...
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Firenze
Messaggi: 630
|
Quote:
__________________
---> Lombardp CSS Certified Expert (Master Level) at Experts-Exchange Proud user of LITHIUM forum : CPU technology Webmaster of SEVEN-SEGMENTS : Elettronica per modellismo |
|
|
|
|
|
|
#9 |
|
Senior Member
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. |
|
|
|
|
|
#10 | |
|
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
Quote:
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 |
|
|
|
|
|
|
#11 |
|
Senior Member
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. |
|
|
|
|
|
#12 |
|
Senior Member
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. |
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Firenze
Messaggi: 630
|
Quote:
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 |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:51.



















