View Full Version : [C++] (Set-Get Pixel) compila ma non funziona
sto realizzando un piccolo programma con SetPixel e Getpixel per inserire il colore dei pixel dello schermo in un array e poi, con SetPixel, riappiccicarli sullo schermo.
Il programma compila perfettamente ma appena provo a far partire l'eseguibile si apre la finestra di dos e si chiude all'istante, nonostante nel codice ci sia anche uno Sleep(5000);
il codice è questo:#include <windows.h>
int main()
{
HDC hdc=GetDC(NULL);
COLORREF ss[1024][768];
for(int x=0;x<1024;x++)
for(int y=0;y<768;y++)
ss[x][y]=GetPixel(hdc,x+1,y+1);
Beep(440,100);
Sleep(5000);
Beep(440,100);
for(int x=0;x<1024;x++)
for(int y=0;y<768;y++)
SetPixel(hdc,x+1,y+1,ss[x][y]);
return 0;
}dove ho sbagliato? :help:
dove ho sbagliato? :help:Va in crash .... hai dichiarato una variabile locale 'ss' (che sta sullo stack, quindi) che occupa 3 MByte e passa. Forse è un po' tantino. ;)
e per forza, il massimo riservato di default per lo stack è un megabyte :p
e per forza, il massimo riservato di default per lo stack è un megabyte :pVero, su MSDN si legge: "The default stack size is 1 MB.". Sul VC++ c'è l'opzione /STACK che consente di specificare una dimensione arbitraria (non so chi l'abbia mai usata :D ma esiste .... 1 MB è più che sufficiente).
@ AngeL)
Metti la variabile come globale o locale come "static" o ancora alloca lo spazio dinamicamente.
e c'era bisogno di leggerlo su MSDN :P
qualsiasi pirlengo che abbia mai aperto PEView (http://www.magma.ca/~wjr/PEview.zip) sa che di default per lo stack i compilatori Win32 mettono 4 kb di commit e 1 mega di reserve :P
da cui si deduce facilmente il funzionamento sottostante: lo stack di ciascun thread in Win32 è gestito in user mode a suon di page guards da parte di KERNEL32.DLL
qualsiasi pirlengo che abbia mai aperto PEView (http://www.magma.ca/~wjr/PEview.zip) sa che di default per lo stack i compilatori Win32 mettono 4 kb di commit e 1 mega di reserve :PQuindi sarei un pirlengo visto che non ho mai usato/aperto PEView??? :mbe:
Quindi sarei un pirlengo visto che non ho mai usato/aperto PEView??? :mbe: coda di paglia? :D
comunque non ho detto che chi non ha mai aperto PEView appartiene all'insieme dei pirlenghi, rileggi meglio :Prrr:
e per forza, il massimo riservato di default per lo stack è un megabyte :Pah..:mc:Metti la variabile come globale o locale come "static" o ancora alloca lo spazio dinamicamente.l'ho dichiarata come static: funziona, grazie :)
Quindi sarei un pirlengo visto che non ho mai usato/aperto PEView??? :mbe:e io cosa sarei visto che non ho neanche idea di cosa sia PEView? :D
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.