Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Polestar 3 Performance, test drive: comodità e potenza possono convivere
Polestar 3 Performance, test drive: comodità e potenza possono convivere
Abbiamo passato diversi giorni alla guida di Polestar 3, usata in tutti i contesti. Come auto di tutti i giorni è comodissima, ma se si libera tutta la potenza è stupefacente
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
In occasione del proprio Architecture Deep Dive 2025 Qualcomm ha mostrato in dettaglio l'architettura della propria prossima generazione di SoC destinati ai notebook Windows for ARM di prossima generazione. Snapdragon X2 Elite si candida, con sistemi in commercio nella prima metà del 2026, a portare nuove soluzioni nel mondo dei notebook sottili con grande autonomia
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
DJI Mini 5 Pro porta nella serie Mini il primo sensore CMOS da 1 pollice, unendo qualità d'immagine professionale alla portabilità estrema tipica di tutti i prodotti della famiglia. È un drone C0, quindi in un peso estremamente contenuto e che non richiede patentino, propone un gimbal rotabile a 225 gradi, rilevamento ostacoli anche notturno e autonomia fino a 36 minuti. Caratteristiche che rendono il nuovo drone un riferimento per creator e appassionati
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-06-2003, 14: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, 15: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, 15: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, 20: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, 18: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, 15: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, 16: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, 16: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, 08: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, 09: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, 15: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, 15: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, 16: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


Polestar 3 Performance, test drive: comodità e potenza possono convivere Polestar 3 Performance, test drive: comodit&agra...
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026 Qualcomm Snapdragon X2 Elite: l'architettura del...
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice Recensione DJI Mini 5 Pro: il drone C0 ultra-leg...
ASUS Expertbook PM3: il notebook robusto per le aziende ASUS Expertbook PM3: il notebook robusto per le ...
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
Record per l'energia eolica: nel Regno U...
Dell e HP rimuovono la codifica e transc...
Prezzo eccezionale per Samsung Galaxy S2...
Black Friday esplosivo: arrivano extra s...
Google apre la strada al file sharing tr...
Black Friday Monitor 2025: OLED, QD-OLED...
Arrivano le nuove specifiche Matter 1.5:...
Microsoft rende open source la trilogia ...
DAZN continua la lotta contro la pirater...
Generativa o predittiva? Il futuro dell’...
BYD va all-in con la Atto 2: batteria pi...
Google modifica la richiesta di consenso...
Black Friday TV: OLED, QLED e Mini-LED a...
007 First Light torna a mostrarsi all'ev...
MOVA Z60 Ultra Roller Complete: il Black...
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: 11:51.


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