- Ubisoft Forward 2024 - Az összes bejelentés egy helyen
- UbiForward24 - Jön az Anno 117: Pax Romana
- UbiForward24 - Hosszabb játékmenet videón az Assassin's Creed Shadows
- UbiForward24 - Sztori kiegészítőt kap az Avatar: Frontiers of Pandora
- UbiForward24 - Prince of Persia: The Sands of Time Remake csak 2026-ban
- Konzolokról KULTURÁLT módon
- XGS24 - Befutott a Dragon Age: Veilguard új előzetese
- Empire of the Ants - Az év végétől építhetünk saját hangyabirodalmat
- Battlefield 2042
- UbiForward24 - Prince of Persia: The Sands of Time Remake csak 2026-ban
- Ubisoft Forward 2024 - Az összes bejelentés egy helyen
- Forza sorozat (Horizon/Motorsport)
- Diablo IV
- Xbox Series X|S
- UbiForward24 - Hosszabb bemutatón a Star Wars: Outlaws
-
GAMEPOD.hu
Új hozzászólás Aktív témák
-
OddMan
őstag
Van egy C++-os OOP-s kérdésem.
Van egy olyan problémám, hogy dinamikusan foglalok memóriát a new-val és amikor a delete-el fel akarom szabadítani, akkor kivételt kapok. Program futtatása alatt semmi gond nincsen, csak amikor ki akarok lépni, akkor meghívódik a destruktor és jön is a csúnya felkiáltójeles ablak. Mit rontottam el?
A forrás egy részét bemásolom alulra. Előre is köszi a segítséget.
class osztaly
{
private:
typedef struct
{
int flag;
float vec3[3];
float vec2[2];
int bone;
}model_vertex_t;
model_vertex_t *mv_ptr;
public:
osztaly(void);
~osztaly(void);
void fg(void);
}
osztaly::~osztaly(void)
{
//mem felszabadítás
delete[] mv_ptr; //ITT KIVÉTEL KELETKEZIK! MIÉRT?????
}
void osztaly::fg(void)
{
//100 elemű model_veretex_t típusú tömb foglalása
mv_ptr = new model_vertex_t[100];
}
[Szerkesztve]''A szíved szabad! Légy bátor és kövesd!''
-
OddMan
őstag
Közben rájöttem, hogy mi a hiba, de az a bemásolt kódból nem derül ki.
A probléma az, hogy a destruktor kétszer hívódik meg, így a delete a második lefutásakor kivételt dob. Talán úgy lehet ezt megszüntetni, hogy NULL-ra állítom az első törlés (delete) után a mutató értékét és egy if-el ellenőrzöm, ha nulla, akkor már nem futtatom le a delete-et még egyszer.
[Szerkesztve]''A szíved szabad! Légy bátor és kövesd!''
-
OddMan
őstag
Igen ez így van, jól lehet látni a visualc++ debuggerében.
MÁS:
Egy kis elmélkedés: létszi javítsatok, ha valahol hülyeséget írtam.
Csak azt akarom megtudni, hogy jól értem-e a struktúrákat.
//Ez csak egy deklaráció
struct elso_s
{
int i, j;
};
//ez már definíció
struct elso_s elso;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct masodik_s
{
int i, j;
}masodik; //itt már definiáljuk is, tehát létre is hozzuk a struktúrát.
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
//csak egy új típust hoz létre
typedef struct harmadik_s
{
int i, j;
}harmadik; //ez csak egy típus, még nincsen változónk
harmadik harmadik_v; //itt hozzuk létre a változót
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct //miben különbözik ez ez egyel fentebbitől?
{
int i, j;
}negyedik; //ez is csak egy új típus
negyedik negyedik_v[20]; //itt hozunk létre egy negyedik típusú 20 elemű tömböt.
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Aztán még mutatókkal is végig lehetne játszani a dolgokat.
[Szerkesztve]''A szíved szabad! Légy bátor és kövesd!''
-
OddMan
őstag
Néha egy osztályon belül használok struktúrát is. Használhatnék osztályt is, amit ilyenkor beágyazott osztálynak hívnánk, de szerintem a struktúra ilyen esetben egyszerűbb, hacsak nem akarunk metódusokat is írni bele. Szal lehet, hogy egy picit rosszul fogalmaztam fentebb.
Egyébként én sehol nem említettem az OOP-t, csak a sima c-ben használt struktúráról volt szó.
[Szerkesztve]''A szíved szabad! Légy bátor és kövesd!''
-
OddMan
őstag
Hogyan lehet a CPU Usage (cpu foglaltság) értékét lekérdezni C++-ban?
Eddig a GetSystemTimes függvénnyel próbálkoztam, de nem igazán kapok jó eredményt.''A szíved szabad! Légy bátor és kövesd!''
-
OddMan
őstag
No most már jól működik. Nem a legszebb, de ahhoz elég, hogy lássam a 2x16-os LCD kijelzőmön a proci kihasználtságot.
//*****************************************************************************
// Get CPU Usage
//*****************************************************************************
void Monitor::GetCPUUsage(void)
{
union
{
DWORD64 part64;
FILETIME ft;
}idleTime;
union
{
DWORD64 part64;
FILETIME ft;
}idleTimelast;
union
{
DWORD64 part64;
FILETIME ft;
}kernelTime;
union
{
DWORD64 part64;
FILETIME ft;
}kernelTimelast;
union
{
DWORD64 part64;
FILETIME ft;
}userTime;
union
{
DWORD64 part64;
FILETIME ft;
}userTimelast;
DWORD64 systime;
GetSystemTimes(&idleTimelast.ft, &kernelTimelast.ft, &userTimelast.ft);
Sleep(TIMEOUT); // 1 sec-et várunk
GetSystemTimes(&idleTime.ft, &kernelTime.ft, &userTime.ft);
/* little calc */
idleTime.part64 -= idleTimelast.part64;
kernelTime.part64 -= kernelTimelast.part64;
userTime.part64 -= userTimelast.part64;
systime = kernelTime.part64 + userTime.part64;
cpuusage = (USHORT)((systime - idleTime.part64) / (systime / 100));
}
Csak XP SP1 és 2003 Server alatt müxik.
[Szerkesztve]''A szíved szabad! Légy bátor és kövesd!''
-
OddMan
őstag
directx (hu) oldal
Bővebben: link
pdf:
Bővebben: link''A szíved szabad! Légy bátor és kövesd!''
-
OddMan
őstag
DirectDraw programozás!
Bővebben: link''A szíved szabad! Légy bátor és kövesd!''
-
OddMan
őstag
Szerintem is a VC++6.0-t vagy a .NET-es verziót kellene használnod. A gcc egy nagyon jó fordító, de mivel nincsen hozzá egy tisztességes GUI felület (pl. DevC++), így rengeteg idő elmegy vacakolással. Miracle-nek igaza van, abban is meg lehet írni mindent, de egy VC-ben sokkal kevesebb szenvedéssel is célba lehet érni. Egyébként nekem azért tetszik jobban a MS VisualC++ , mert a Microsoft egy nagyon barátságos és sokat tudó debugger-t pakolt a fejlesztői környezetbe.
''A szíved szabad! Légy bátor és kövesd!''
-
OddMan
őstag
#include <conio.h>
int main()
{
// TODO: Please replace the sample code below with your own.
for (int i=0; i<5; ++i)
{
printf(''i: %d\n'', i);
}
getch();
printf(''i: %d\n'', i);
return 0;
}
kimenet:
-------------
i: 0
i: 1
i: 2
i: 3
i: 4
i: 5
Ezek szerint tényleg nem csak a for blokkon belül érvényes az i változó.
VC++ 2003 .NET-ben ferdítve.
Eddig ezt észre sem vettem.
[Szerkesztve]''A szíved szabad! Légy bátor és kövesd!''
-
OddMan
őstag
Hogyan lehet azt leprogramozni windows-ban, hogy amikor kisméretre állítom a progimat, akkor az óra mellé kerüljön a többi kis ikon mellé.
''A szíved szabad! Légy bátor és kövesd!''
-
OddMan
őstag
Ne értsetek félre, én is C párti vagyok, de azért azt ne felejtsük el, hogy Pascal/Delphi-ben is lehet nagyon komoly programokat írni, pl.: az Imperium Galactica is Turbo Pascal 7.0-val készült, és a 16bit-es védett módot is kihasználta.''A szíved szabad! Légy bátor és kövesd!''
-
OddMan
őstag
#758-ra valaki?
''A szíved szabad! Légy bátor és kövesd!''
-
OddMan
őstag
Linux scriptek írásának megtanulásához egy jó magyar nyelvű könyv: Bővebben: link
''A szíved szabad! Légy bátor és kövesd!''
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- Synology NAS
- Parfüm topik
- Konzolokról KULTURÁLT módon
- Kezdő fotósok digitális fényképei
- XGS24 - Befutott a Dragon Age: Veilguard új előzetese
- Notebook hűtőpad
- Politika
- Óvodások homokozója
- Empire of the Ants - Az év végétől építhetünk saját hangyabirodalmat
- KuKirin G4 - a sebesség ára
- További aktív témák...
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen